Skip to content
This repository was archived by the owner on Apr 27, 2019. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
107 commits
Select commit Hold shift + click to select a range
8ccaf4c
fix bug that caused all plugins to be activated twice on startup
saik0 Feb 3, 2014
7d7bd6a
Added way better file path support. Should make testing easier, as we…
AMorporkian Feb 3, 2014
c193d33
Merge remote-tracking branch 'origin/development' into development
AMorporkian Feb 3, 2014
0d81707
Fixed paths everywhere; you can now run it without having to cd to th…
AMorporkian Feb 3, 2014
4982efb
Fixed error message on some log-ins because of the bouncer.
AMorporkian Feb 4, 2014
2a48082
Fixed connection logging and added a few other checks to reduce chanc…
AMorporkian Feb 4, 2014
d37fc19
Fixed kick command
AMorporkian Feb 4, 2014
0a809cf
Removed all exc_info's for better pypy compatibility, and no longer s…
AMorporkian Feb 4, 2014
79c5abf
lets try this landscape.io out
Feb 4, 2014
65ed416
changes hardcoded ## to use chat_prefix
Feb 4, 2014
4fbbde9
reworks the UDP proxy to be a plugin
Feb 4, 2014
c73988a
Merge pull request #79 from CarrotsAreMediocre/reworks_udp_proxy_as_p…
AMorporkian Feb 4, 2014
969cc15
makes use of datetime.utcnow()
Feb 4, 2014
f195f91
Merge pull request #80 from CarrotsAreMediocre/use_utcnow
AMorporkian Feb 4, 2014
3788f59
makes more things configurable
Feb 4, 2014
5b270a3
removes Bouncer plugin
Feb 4, 2014
b832db0
Merge pull request #82 from CarrotsAreMediocre/consilidates_protection
AMorporkian Feb 4, 2014
d29be38
adds broadcast_planet method
Feb 5, 2014
53cf0d1
Revert "adds broadcast_planet method"
Feb 5, 2014
a2ae07f
adds broadcast_planet
Feb 5, 2014
292a2ca
Merge branch 'master' into development
Feb 8, 2014
d73bb84
Merge branch 'master' into development
Feb 9, 2014
0ac825d
adds config param to set address to listen on
Feb 10, 2014
3f12b67
Some SQLAlchemy session cleanup
slitherrr Feb 10, 2014
3e559cb
Fix for plugin_storage
slitherrr Feb 11, 2014
b855383
Merge pull request #98 from slitherrr/cleanup-sqlalchemy_sessions
Feb 11, 2014
7485437
adds "boneswoosh" to blocked projectiles
Feb 11, 2014
7ca524c
Update for Enraged Koala.
AMorporkian Feb 19, 2014
1437fcf
Fixes for bizarre enum34 behavior when used in pypy.
AMorporkian Feb 19, 2014
75f117f
Removed some debug code I stupidly left in that would spam the logs o…
AMorporkian Feb 19, 2014
44af4b7
Made all chat messaged strings translatable.
AMorporkian Feb 19, 2014
dc1cba7
Fixed logging level of planet warp.
AMorporkian Feb 19, 2014
f3b9e36
Added force command to /protect.
AMorporkian Feb 20, 2014
4ad1bfa
Fixed issue with names not returning any results.
AMorporkian Feb 20, 2014
351c82e
Removed extraneous debug prints.
AMorporkian Feb 20, 2014
a3aa937
Put bans command back in to list bans.
AMorporkian Feb 20, 2014
bd6d5b4
Fixed /warp command.
AMorporkian Feb 20, 2014
1e24703
Fixed formatting of /bans.
AMorporkian Feb 20, 2014
f13b1ae
Disabled default portcheck since it's broken.
AMorporkian Feb 21, 2014
24e11f1
Fixed portcheck.
AMorporkian Feb 21, 2014
d75ac46
Fixed permissions on make_guest.
AMorporkian Feb 21, 2014
984ca9a
Fixed up a bad query causing server to load slow. Also fixed some min…
May 13, 2014
996d9f2
remove an unneeded import, and add to the version number
kharidiron May 13, 2014
a675e09
fixed issues with player name extraction. Moved most commands over to…
kharidiron May 14, 2014
830be32
forgot to increment version
kharidiron May 14, 2014
2c9c195
motd bloat message removal
Tsunder May 22, 2014
80c40da
Update motd_plugin.py
Tsunder May 22, 2014
c1f3b3b
Added new plugin, and interpreter for client_context packs. made a fe…
kharidiron May 22, 2014
f7bbeb7
remove some files from the git list that don't need to be there
kharidiron May 22, 2014
6158aa2
Made SBReddit-specific changes. I'll branch later for proper upstream…
kharidiron May 22, 2014
8fdd9cd
Increment version number
kharidiron May 22, 2014
b00fb43
Merge pull request #10 from Tsunder/patch-1
kharidiron May 22, 2014
68bd0e9
added the ability to filter planet-side chat from IRC channel (increa…
kharidiron May 22, 2014
4e57f60
starter items nerf
Tsunder Jun 8, 2014
ec18d04
some fixes
kharidiron Jun 8, 2014
4cc8b78
Merge branch 'master' of https://github.com/kharidiron/StarryPy
kharidiron Jun 8, 2014
145a7d6
Merge pull request #15 from Tsunder/patch-4
kharidiron Jun 8, 2014
7b3fcc9
brining the development branch up to speed
kharidiron Jan 4, 2015
b7c1be4
A few more fixes
kharidiron Jan 4, 2015
fc1ff52
Initial work on bringing packets up to the newest versions. A lot of …
kharidiron Jan 4, 2015
735dbf2
More packet editing. tried correcting things to match SB documentatio…
kharidiron Jan 4, 2015
87545c9
small changes to allow server to start for testing. will need to prop…
kharidiron Jan 4, 2015
7af5c39
corrected server.py to match new packet types
kharidiron Jan 4, 2015
7155121
Got everything working using a vanilla connection. Need to start whac…
kharidiron Jan 5, 2015
08157b3
Fixed warping. Added command for warping to outposts directly.
kharidiron Jan 8, 2015
e5e1b2c
small correction
kharidiron Jan 8, 2015
47538b9
Removed unnecessary plugin (UDP), unnecessary/old folder (test), and …
kharidiron Jan 31, 2015
ca070f7
code refactoring, fixing client DC and crash bugs. Brought in IRC bot…
kharidiron Feb 1, 2015
1c8e195
changed some permissions on warpy
kharidiron Feb 2, 2015
ef9d969
split bookmarks into two plugins (bookmarks and poi). Moved spawn com…
kharidiron Feb 2, 2015
3a24e87
Fixed the default.json file to work out of the box correctly (no more…
kharidiron Feb 2, 2015
083cc04
Turned IRC auto_enable off in config.json.defualts
kharidiron Feb 2, 2015
88dbf6d
Made some changes to logging.
kharidiron Feb 3, 2015
f882609
Fixed ship-based warping for bookmarks and PoI. Remade /spawn as a co…
kharidiron Feb 3, 2015
7537ef1
Remove visibility of other .json files from git commits. No one needs…
kharidiron Feb 3, 2015
c35caec
Re-added modchatter plugin, and tested to be sure it worked
kharidiron Feb 3, 2015
834db72
Worked on chat system. Fixed packet structure, resolved issue #34 reg…
kharidiron Feb 3, 2015
a292927
Fixed issue #22 regarding weird spacing.
kharidiron Feb 3, 2015
dee6f71
Re-built a custom logging level (VDEBUG) for the more verbose messages.
kharidiron Feb 3, 2015
517675c
added auto-reconnecting functionality to the IRC Bot, in case of conn…
kharidiron Feb 3, 2015
782447c
Fixed some over-verbosity issues (I forgot to turn off).
kharidiron Feb 4, 2015
907062a
Added brutus_whisper plugin (works out of the box, not modification n…
kharidiron Feb 4, 2015
d2738bc
Added emotes plugin. Worked out of box, no modifcation needed.
kharidiron Feb 4, 2015
92f69dc
Added AFK plugin. Everything works.
kharidiron Feb 4, 2015
3f18a7a
Added login_who back in. Works! :)
kharidiron Feb 4, 2015
20cb4e6
Readded planet_visitor_announcer. Brought it up to speed with the new…
kharidiron Feb 4, 2015
dddbde4
Added fuelgiver back in. Small text tweaks.
kharidiron Feb 4, 2015
9976a48
Fixed shutdown command to not throw an error on no input.
kharidiron Feb 4, 2015
93cb4d8
Added stateritems plugin back in. Works.
kharidiron Feb 4, 2015
7eb08f2
Added claims and web_gui. Teihoo did the testing. :)
kharidiron Feb 4, 2015
f2f1c65
Fixed my flub...
kharidiron Feb 4, 2015
210a4f7
People were skipping the wrapper by changing their character name wit…
kharidiron Feb 5, 2015
1085927
Starter items got skipped for some reason. Fixing.
kharidiron Feb 5, 2015
b25b52a
added tornado
kharidiron Feb 6, 2015
d6d96b8
Some packet updating and cleanup.
kharidiron Feb 7, 2015
13aa707
Setup a shared-secret auth system for mod+ users to prevent user spoo…
kharidiron Feb 7, 2015
3ef6728
Merge branch 'development' of https://github.com/kharidiron/StarryPy …
kharidiron Feb 7, 2015
3369721
oops, forgot to fix the config.json file.
kharidiron Feb 7, 2015
d743169
Cleanup after changing my vim flow
kharidiron Feb 7, 2015
1296719
More cleanup for vim
kharidiron Feb 7, 2015
d90d154
Change logging to use rotating log files, kept for 5 days, rotated at…
kharidiron Feb 7, 2015
24807b7
helps if I add the file...
kharidiron Feb 7, 2015
269a2c3
Added more packet types... used some of these to fix the issues with …
kharidiron Feb 11, 2015
4124334
Commented out some of my debug lines.
kharidiron Feb 11, 2015
f5e3fae
bring config.json.default up to speed.
kharidiron Feb 11, 2015
f020179
Resolved and ready for merge!
kharidiron Feb 11, 2015
b02e42a
Updated version number and Readme file.
kharidiron Feb 11, 2015
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,14 @@ nosetests.xml
.pydevproject

# Project specific
*config.json
*.json
*.db
*.db-journal
*.log
.idea/
*.log.*
.idea/

# Vim mess cleanup
*.swp
*.un~
.ropeproject/
4 changes: 4 additions & 0 deletions .landscape.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
doc-warnings: yes
test-warnings: no
strictness: high
autodetect: yes
56 changes: 26 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@ With the built-in plugins (which are removable):
* Join/quit announcements.
* And more.

## Version 1.5 is here!

## Upgrading from older versions of StarryPy
With this most recent release, we are compatible with the current release of Starbound (Upbeat Giraffe). Any bugs found in the process, please open an issue ticket, so we can squash them as quickly as possible.

In version 1.4.x a new requirement "sqlite3" has been added to requirements.txt.
It is required to perform DB upgrade. Install manually with: pip install sqlite3
## Upgrading from older versions of StarryPy

StarryPy 1.5 is **NOT** backwards compatible with older versions. As unfortunate as it is, we suggest wiping your database, and starting fresh. It will save a lot of headaches in the long run.

## Installation

Expand Down Expand Up @@ -116,6 +117,13 @@ variables:
on.
* passthrough: **Make sure this is false.** It is an emergency off switch for
StarryPy.

In addition you may also want to setup

* owner_uuid: This should be the UUID associated with whatever in-game character you want to have 'ownership' rights on the server. From there you can promote others to moderator, admin, or even owner as well.
* admin_ss: This is a password that unlocks the ability for Moderators, Admins and Owners to use commands on the server. This is a deadman switch system, meaning that you **will not be able to use privileged commands** if you do not have this password setup. Once you have set a password here, when logging into your server from Starbound, type this password in the `account` field. This is used **in addition** to your server password.
* log_level: This is, but default, set to `DEBUG`. If you want leaner logs, set it to `INFO`. If you want to see all the details going on in the background, set it to `VDEBUG`.
* irc settings: If you want chat replication to an IRC chatroom, setup your bot parameters here. A password is may not be required for all servers, but the added security isn't a bad idea.

Finally, find starbound.config and change `gameport` to be exactly the same as
`upstream_port` in config.json.
Expand All @@ -134,7 +142,7 @@ Enter `python server.py` to start the proxy.

StarryPy is nearly entirely plugin driven (our plugin manager is a plugin!), so
there are quite a few built-in plugins. The truly important plugins are in the
core\_plugins folder. If you remove any of those, it's likely that most other
`core/` plugins folder. If you remove any of those, it's likely that most other
plugins will break. We'll break them down by core plugin and normal plugin
classes.

Expand Down Expand Up @@ -180,11 +188,6 @@ prefixed with ## will be sent to moderators+ only. `Access: Everyone`

This plugin simply announces whenever a player joins or quits the server.

#### Bouncer

This plugin prevents non-registered users from building or destroying anything. It
is disabled by default.

#### Colored names

This plugin displays color codes for each username depending on rank. The colors
Expand All @@ -196,14 +199,12 @@ This plugin sends a Message of the Day on login.

#### New Player Greeter

Greets first-time players on the server. Gives them a greeting (located in
new\_player\_message.txt) and gives them a pack of starter items (located in
starter\_items.txt). Default items are 200 `coalore` and 5 `alienburger`s.
Greets first-time players on the server. Gives them a greeting that can be configured in the config file and can also give them a pack of starter items. (200 Coal is currently included to give you a sample of the format expected.)

#### Planet Protection

This plugin protects specified planets against modification in any way. Currently
if a planet is protected only registered users may modify it.
if a planet is protected only those users who are the planet's protect list may make modifications.

#### Plugin Manager

Expand All @@ -212,9 +213,16 @@ that it's a plugin, you don't have to tell me.

#### Warpy

This plugin provides various methods for warping players and ships around.
This plugin provides various methods for warping players around.

#### PoI and Bookmarks

These are two seperate plugins that do similar things. Every user has the ability to planets to their own personal bookmark list, allowing for fast return to the planet later.

Points of Interest are setup by administrators for the whole community, allowing fast, fuel-free travel to those desintations.

#### WebGUI

If activated, this will give you a web-GUI to administrate your StarryPy server. You can log in with your Character's name and the password you set as "ownerpassword" in the StarryPy config.

##### Config Parameters:
Expand All @@ -231,11 +239,6 @@ If activated, this will give you a web-GUI to administrate your StarryPy server.
* [jQuery-Knob](http://anthonyterrien.com/knob/), [D3](http://d3js.org/), [Select2](https://github.com/ivaynberg/select2), [Bootstrap Validator](https://github.com/nghuuphuoc/bootstrapvalidator), [TinyMCE](http://www.tinymce.com), [jQuery Timepicker](http://trentrichardson.com/examples/timepicker/), [xCharts](http://tenxer.github.io/xcharts/), [Fancybox](http://fancyapps.com/fancybox/), [Widen FineUploader](https://github.com/Widen/fine-uploader), [Datatables](http://datatables.net), jQuery-UI 1.10.4, [Twitter Bootstrap](http://getbootstrap.com), [Flot](www.flotcharts.org), [Fullcalendar](http://arshaw.com/fullcalendar), [Moment](http://momentjs.com/), [Justified Gallery](https://github.com/miromannino/Justified-Gallery), [Morris Charts](http://www.oesmith.co.uk/morris.js/)


#### More plugins

Even more plugins can be found over at
[our plugin list](https://github.com/MrMarvin/StarryPy_plugins).

## Plugin development

There are several built-in plugins that you can derive inspiration from. The
Expand All @@ -262,8 +265,9 @@ provide a link.

### None of the commands are working

You are likely in passthrough mode or connecting to the vanilla server. Check
config.json and ensure that passthrough is false.
You likely did not provide the admin_ss password. If the server is responding "You're not logged in, so I can't let you do that", then this is the case. Please check that you have the admin_ss password set, and that you are putting it in the `account` field at login.

If you are seeing responses from the Starbound built-in commands, then you are either in passthrough mode, connecting directly to the vanilla server, or your account is in a foul state. For the first case, check config.json and ensure that passthrough is false. For the next, ensure you are indeed connecting to to the StarryPy server port, and not the vanilla server's. If you're account is fouled, have another moderator or admin kick you character. This seems to clear the bad sate.

If you are running StarryPy on the same computer you're playing it from, it is
likely it is using the gameport in starbound.config to connect to. To avoid this,
Expand All @@ -286,17 +290,9 @@ We have quite a roadmap, here are some of the highlights you can expect in the
next major version, and in the development branch before that if you're feeling
brave:

* Spawn networks. Free transportation between admin-designated planets, so your
new players can get a leg up in the world.
* Loot rolling. So a rare item dropped and you don't think it's fair your friend
got it? Soon you'll be able to get good items without ending friendships and
going to prison on the inevitable murder charge.
* Lotteries. Because what is life without a little risk?
* Creature spawning. Want to spawn a couple dozen bone dragons? So do we!
* Internationalization. Translate plugins and core messages with ease to your
preferred language.
* Role based access control Thought the mod/admin/owner distinction is useful,
having individual roles is our plan for the future.
* Client filtering based on modded items. Though asset digests aren't supported
right now, we want to do some minor filtering to keep out the riff-raff (if you
as an admin want to.)
Expand All @@ -311,7 +307,7 @@ issues page.

We're absolutely happy to accept pull requests. There is a freenode channel
called [##starbound-dev](http://webchat.freenode.net/?channels=##starbound-dev)
that we discuss our development on primarily.
that we discuss our development on primarily. We also have the channel [##starrypy](http://webchat.freenode.net/?channels=##starrypy) for discussion specific to our wrapper.

Other than that, please report any bugs you find with the appropriate section of
the debug.log file that is generated.
36 changes: 30 additions & 6 deletions base_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ def on_handshake_challenge(self, data):
def on_chat_received(self, data):
return True

def on_celestial_request(self, data):
return True

def on_universe_time_update(self, data):
return True

Expand Down Expand Up @@ -144,7 +147,7 @@ def on_burn_container(self, data):
def on_clear_container(self, data):
return True

def on_world_update(self, data):
def on_world_client_state_update(self, data):
return True

def on_entity_create(self, data):
Expand All @@ -156,6 +159,9 @@ def on_entity_update(self, data):
def on_entity_destroy(self, data):
return True

def on_hit_request(self, data):
return True

def on_status_effect_request(self, data):
return True

Expand All @@ -177,10 +183,16 @@ def on_damage_notification(self, data):
def on_client_connect(self, data):
return True

def on_client_disconnect(self, player):
def on_client_disconnect_request(self, player):
return True

def on_player_warp(self, data):
return True

def on_fly_ship(self, data):
return True

def on_warp_command(self, data):
def on_central_structure_update(self, data):
return True

def after_protocol_version(self, data):
Expand All @@ -195,6 +207,9 @@ def after_handshake_challenge(self, data):
def after_chat_received(self, data):
return True

def after_celestial_request(self, data):
return True

def after_universe_time_update(self, data):
return True

Expand Down Expand Up @@ -285,7 +300,7 @@ def after_burn_container(self, data):
def after_clear_container(self, data):
return True

def after_world_update(self, data):
def after_world_client_state_update(self, data):
return True

def after_entity_create(self, data):
Expand All @@ -297,6 +312,9 @@ def after_entity_update(self, data):
def after_entity_destroy(self, data):
return True

def after_hit_request(self, data):
return True

def after_status_effect_request(self, data):
return True

Expand All @@ -318,10 +336,16 @@ def after_damage_notification(self, data):
def after_client_connect(self, data):
return True

def after_client_disconnect(self, data):
def after_client_disconnect_request(self, data):
return True

def after_player_warp(self, data):
return True

def after_fly_ship(self, data):
return True

def after_warp_command(self, data):
def after_central_structure_update(self, data):
return True

def __repr__(self):
Expand Down
1 change: 1 addition & 0 deletions config.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ def __init__(self):
def save(self):
try:
with io.open(self.config_path.path, "w", encoding="utf-8") as config:
self.logger.debug("Writing configuration file.")
config.write(json.dumps(self.config, indent=4, separators=(',', ': '), sort_keys=True, ensure_ascii=False))
except Exception as e:
self.logger.critical("Tried to save the configuration file, failed.\n%s", str(e))
Expand Down
1 change: 1 addition & 0 deletions config/bookmarks/pois.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[["alpha:18199896:-7537982:-29875958:4:0", "spawn"], ["alpha:-46228686:-57338749:-26585271:8:0", "buildplanet"], ["sectorx:1999:1997:-14622445:3:6", "featheropolis"], ["sectorx:-1:-3:5876938:4:0", "pvparena"], ["sectorx:32704560:41511008:-3580117:7:1", "charon"]]
Loading