ofs | hex dump | ascii |
---|
0000 | 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 01 00 00 00 01 00 08 06 00 00 00 5c 72 a8 | .PNG........IHDR.............\r. |
0020 | 66 00 00 00 06 62 4b 47 44 00 ff 00 ff 00 ff a0 bd a7 93 00 00 00 09 70 48 59 73 00 00 0e c3 00 | f....bKGD..............pHYs..... |
0040 | 00 0e c3 01 c7 6f a8 64 00 00 00 07 74 49 4d 45 07 e0 06 09 13 14 28 2d a3 69 8e 00 00 20 00 49 | .....o.d....tIME......(-.i.....I |
0060 | 44 41 54 78 da ec bd 7b b0 6c d9 59 1f f6 fb be b5 f6 a3 bb cf eb 9e fb 9a d1 8c 34 44 08 3d 91 | DATx...{.l.Y...............4D.=. |
0080 | 46 96 90 c5 c3 63 85 87 31 89 1d 84 41 11 02 83 a1 1c 97 5d 06 59 8e 0b 8a 40 e2 14 45 62 92 0a | F....c..1...A......].Y...@..Eb.. |
00a0 | 58 3c 24 21 9b c4 65 1b 17 18 11 c0 21 29 57 2a 60 23 92 d8 45 40 32 46 02 24 d0 48 08 8d 9e 33 | X<$!..e.....!)W*`#..E@2F.$.H...3 |
00c0 | f7 79 ce e9 d3 dd 7b ef b5 d6 f7 e5 8f b5 d6 ee dd 7d cf c8 23 cd cc 95 e6 de fd bb d5 75 cf bd | .y....{..........}..#........u.. |
00e0 | b7 ef 39 dd bd f7 fa 1e bf ef f7 7d 1f 30 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 | ..9........}.0b...#F..1b...#F..1 |
0100 | 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 | b...#F..1b...#F..1b...#F..1b...# |
0120 | 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 | F..1b...#F..1b...#F..1b...#F..1b |
0140 | c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 | ...#F..1b...#F..1b...#F..1b...#F |
0160 | 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 | ..1b...#F..1b...#F..1b...#F..1b. |
0180 | 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c | ..#F..1b...#F..1b...#F..1b...#F. |
01a0 | 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 | .1b...#F..1b...#F..1b...#F..1b.. |
01c0 | 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 | .#F..1b...#F..1b...#F..1b...#F.. |
01e0 | 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 23 46 8c 18 31 62 c4 88 11 | 1b...#F..1b...#F..1b...#F..1b... |
0200 | 23 46 8c 18 31 62 c4 88 11 23 46 3c 79 d0 dd f2 46 5f f2 e2 17 4e 00 bc 0d 44 7f 95 c8 62 67 67 | #F..1b...#F<y...F_...N...D...bgg |
0220 | 86 e9 74 8a c9 64 82 67 3f fb d9 d8 df df 07 11 a1 eb 3a 84 10 20 22 f0 de 43 44 60 ad 45 55 55 | ..t..d.g?.........:..."..CD`.EUU |
0240 | 00 80 f9 7c 8e 8f 7f fc e3 38 3d 3d c5 c9 c9 09 6e de bc 89 dd dd 5d 4c a7 93 5f 25 a2 6f 7e d7 | ...|.....8==....n.....]L.._%.o~. |
0260 | bb de 7d 3c de 56 b7 07 2f 7f f9 83 fb 0a fd 85 66 d5 fe f9 c5 62 81 c3 c3 43 ec ed ed 61 6f 6f | ..}<.V../.......f....b...C...aoo |
0280 | 0f 0f 3c f0 00 f6 f6 f6 20 22 58 2e 97 70 ce 41 55 a1 aa 20 22 d4 75 8d dd dd 5d 10 11 ae 5d bb | ..<......"X..p.AU...".u...]...]. |
02a0 | 86 8f 7c e4 23 58 2c 16 e9 71 8a a2 b0 a8 eb fa e1 b2 28 bf f4 ff fb ad df be 79 a7 7e 86 f6 6e | ..|.#X,..q........(.......y.~..n |
02c0 | b9 59 76 66 33 a8 2a 44 14 ad f3 50 55 00 80 aa c2 7b 8f 10 02 88 a8 ff 7b 22 82 b5 b6 ff 3a 3f | .Yvf3.*D...PU....{......{"....:? |
02e0 | 57 44 20 22 bd 91 c8 5f 7b ef c1 44 e3 a9 bc 9d de 8b 19 80 f4 6e 8c 88 fa 6b 95 af 57 be 9e db | WD."..._{..D.........n...k..W... |
0300 | 7f de fe fb e1 ff cd cf 13 09 08 c1 dd d1 17 f5 ae 31 00 93 c9 04 0a 14 c1 07 74 7e 01 22 02 33 | .................1........t~.".3 |
0320 | a3 28 0a 54 55 85 b2 2c 37 0e 38 00 30 73 ff 7b 36 0e c3 e7 e4 af bd f7 f0 de 83 30 1a 80 cf 59 | .(.TU..,7.8.0s.{6..........0...Y |
0340 | 10 bb f5 d1 6f 1f fe 6d 9c 65 00 f2 f5 26 62 ec ed ed a1 2c ab 23 d5 10 46 03 70 27 dc 26 44 44 | ....o..m.e...&b....,.#..F.p'.&DD |
0360 | 4c f7 fb 74 3d f3 05 37 c6 c0 5a 8b a2 28 a0 aa bd 67 1f de 40 c6 18 d4 75 0d 00 70 ce c1 5a db | L..t=..7..Z..(...g..@...u..p..Z. |
0380 | df 2c 00 52 14 20 e3 59 bc cd 30 c6 40 44 2a 42 fc 95 23 b1 1c d1 65 03 9d 8d f8 f0 9a e5 74 2f | .,.R...Y..0.@D*B..#...e.......t/ |
03a0 | 5f e7 fc ef cc 1c ff 6c 2c 88 e9 b2 ef 82 19 0d c0 1d 00 1f 02 ab d7 83 e0 fd 46 b8 38 0c 19 69 | _......l,.................F.8..i |
03c0 | 2b 84 cf 9e 61 3b 74 cc c6 23 3f 9f a0 20 e0 22 8d 39 c0 6d 86 1a 91 70 af 48 80 2a 6e 89 d0 c2 | +...a;t..#?....".9.m...p.H.*n... |
03e0 | c0 d8 6f 5f db e1 75 dd be be f9 11 82 b4 22 9f 26 8c 18 0d c0 33 c9 5b b0 74 ae 5b 0e c9 a0 7c | ..o_..u.......".&....3.[.t.[...| |
0400 | a3 0c c3 fe b3 c2 7c 22 da f8 f7 7c 03 19 63 60 8c 01 31 43 45 56 aa ea c6 43 79 fb d0 36 8d a8 | ......|"...|..c`..1CEV...Cy..6.. |
0420 | 06 0d 41 a0 2a 6b 83 9c 0c f4 d0 e3 6f 5f bb 1c 15 88 48 6f 0c 36 a2 3f 51 94 93 f2 a8 aa 2a 37 | ..A.*k......o_....Ho.6.?Q.....*7 |
0440 | 1a 80 3b 00 41 c4 06 1f ee f5 de 6f 78 8b ed 90 7f f8 88 cf 8d 06 c0 7b df 1b 82 61 f4 d0 3f 98 | ..;.A......ox..........{...a..?. |
0460 | 5e a2 8a 12 c0 62 3c 9a b7 2b 00 40 2d 82 67 0d 3d 78 4e eb 86 e1 fc d0 a8 6f 73 3b 39 92 cb 11 | ^....b<..+.@-.g.=xN......os;9... |
0480 | 43 4e 1d 00 05 80 cb 77 7a 48 77 d7 18 00 d7 75 d2 76 ee d8 79 0f 66 7b 4b b8 b7 ed e1 87 51 00 | CN.....wzHw....u.v..y.f{K.....Q. |
04a0 | 51 cc 2f f3 0d b5 1d 4a 1a 36 60 a6 93 10 30 12 01 b7 95 d8 51 01 d0 0d a3 fb a1 51 ce 1e 7e 78 | Q./....J.6`...0.....Q......Q..~x |
04c0 | ad b7 23 81 6c 00 86 55 9d fe 7b 01 2b 10 dd d1 24 20 df 35 11 40 f0 a2 12 ae c7 1b 01 b7 18 00 | ..#.l..U..{.+...$..5.@.......... |
04e0 | 7d 02 a9 de f0 79 c3 9c d2 58 0b c3 76 4e 3c 52 00 b7 13 02 15 66 0e cc 66 93 93 d9 8a ce 86 dc | }....y...X..vN<R.....f..f....... |
0500 | cd 59 a9 c0 76 8a d0 ff 0e 5c bb c3 29 80 bb c7 00 78 1f 94 88 ae 58 6b 41 83 ba f1 b6 b7 df f6 | .Y..v....\..)....x....XkA....... |
0520 | 0e 39 cf 3f 8b 1f c8 cf 0f 21 c0 07 ff d8 58 06 bc cd 06 20 68 00 70 94 73 f8 27 aa 03 18 5e e3 | .9.?.....!....X.....h.p.s.'...^. |
0540 | c7 7b a4 e7 3f 76 a7 7f 86 77 4d 0a d0 76 0e 00 9a 98 fb d9 8d 90 f1 f1 08 a3 7c d8 cf 62 93 37 | .{..?v...wM..v............|..b.7 |
0560 | 22 06 55 18 6b 1c e9 dd 6d 00 5e fb da d7 d2 3d f7 dc 83 d9 6c c6 c6 18 0d 21 a0 eb 3a 7d db db | ".U.k...m.^....=....l....!..:}.. |
0580 | de f6 b4 b8 51 02 49 10 f9 a4 a8 bc e0 f1 3c f9 a7 13 02 9d 25 0a 8a f7 43 34 28 4c 74 c7 ab 3a | ....Q.I.......<.....%...C4(Lt..: |
05a0 | ef 9a 08 c0 39 07 e7 5c 22 79 3e bd 47 78 3c 0f d2 7f 68 03 a2 89 88 60 ac 45 55 56 28 ea ea ae | ....9..\"y>.Gx<...h....`.EUV(... |
05c0 | 36 00 f3 f9 1c 57 af 5e 35 a7 a7 a7 c6 39 67 99 19 65 59 e2 bb bf fb bb 9f 16 cb 68 8c 81 35 b6 | 6....W.^5....9g..eY........h..5. |
05e0 | 23 d0 46 59 6f c8 f2 0f 0d fb b0 d6 7f 56 f8 bf 36 f8 83 8a c2 18 01 dc 19 28 8b 22 9b f8 33 0f | #.FYo........V..6........(."..3. |
0600 | f9 b0 1c 94 8d 81 31 a6 ff fd d3 a5 00 29 5f bc eb 13 80 77 be f3 9d fa d5 5f fd d5 c2 cc ca cc | ......1......)_....w....._...... |
0620 | 5a d7 b5 fe c4 4f fc c4 d3 96 44 1b 63 a0 d0 81 82 ef 89 4b 81 3f 5d 0a 90 bf 9f 48 b8 e3 7d e4 | Z....O....D.c......K.?]....H..}. |
0640 | 5d d9 0b d0 f9 b0 71 53 e4 f2 cf d8 0b f0 e4 f1 eb bf fe eb b7 ad 12 f2 54 f5 02 0c ff 6f 8c ee | ].....qS................T....o.. |
0660 | 18 22 21 95 7e c7 08 e0 8e 40 ea 05 80 77 1e 2e ac 36 c9 a4 41 b9 6f bb a6 3c f4 0c 63 2f c0 e7 | ."!.~....@...w...6..A.o..<..c/.. |
0680 | 23 9e 7c 2f c0 59 d1 80 4f 8a 51 e6 d1 00 dc 19 b7 09 11 40 84 cc d3 6d df 00 67 91 43 f9 d0 9f | #.|/.Y..O.Q........@...m..g.C... |
06a0 | 65 08 b2 e1 58 47 11 a3 04 e0 76 c3 18 03 55 85 61 b3 61 7c 87 e5 c0 ed 90 7f fb da de 4a 00 46 | e...XG....v...U.a.a|.........J.F |
06c0 | ad 47 db b6 31 2a 84 8e 06 e0 4e 80 a8 b2 8a 54 12 04 51 3b 7e 36 f1 37 64 fd 87 aa bf dc 00 d4 | .G..1*....N....T..Q;~6.7d....... |
06e0 | cb 7f b7 8c 01 11 95 80 9a f1 58 de 3e a8 6a 01 a0 8a c6 1d b7 1c e4 6d c3 9d 8d 46 fe 3a 5f e7 | ..........X.>.j........m...F.:_. |
0700 | c7 6b 07 56 95 89 31 86 47 03 70 07 a0 ac aa 0a 84 1d 10 61 b9 6a fa 2e c0 aa aa 30 9b cd b0 b7 | .k.V..1.G.p........a.j.....0.... |
0720 | b7 07 55 45 d3 34 1b c3 23 00 c0 5a 8b b2 2c e3 f7 29 cb 0d a9 29 00 a8 08 24 f8 82 68 54 02 de | ..UE.4..#..Z..,..)...)...$..hT.. |
0740 | 4e f8 b6 3b a7 a4 af f0 de 01 8a 9e 8b e9 ba ae 7f 64 6c 97 79 b3 fc 37 a7 71 f9 7e 88 46 83 71 | N..;.............dl.y..7.q.~.F.q |
0760 | 70 ee 10 b3 c9 e4 4f 81 30 c5 1d 2c ef be 7b 74 00 cd d2 a9 e2 c4 b9 27 df 0d 38 7c 6e bc 61 00 | p.....O.0..,..{t.......'..8|n.a. |
0780 | 22 2c 00 d6 f1 58 de ce bc 4e 02 80 13 55 dd db ee 06 7c 22 ea ce c7 eb 06 14 11 88 2a 04 38 25 | ",...X...N...U....|"........*.8% |
07a0 | bd b3 8
inline void int64_to_sqlite(sqlite3_stmt *s, int iCol, s64 val) const
{
sqlite3_vrfy(sqlite3_bind_int64(s, iCol, (sqlite3_int64) val));
}
inline void double_to_sqlite(sqlite3_stmt *s, int iCol, double val) const
{
sqlite3_vrfy(sqlite3_bind_double(s, iCol, val));
}
inline std::string sqlite_to_string(sqlite3_stmt *s, int iCol)
{
const char* text = reinterpret_cast<const char*>(sqlite3_column_text(s, iCol));
return std::string(text ? text : "");
}
inline s32 sqlite_to_int(sqlite3_stmt *s, int iCol)
{
return sqlite3_column_int(s, iCol);
}
inline u32 sqlite_to_uint(sqlite3_stmt *s, int iCol)
{
return (u32) sqlite3_column_int(s, iCol);
}
inline s64 sqlite_to_int64(sqlite3_stmt *s, int iCol)
{
return (s64) sqlite3_column_int64(s, iCol);
}
inline u64 sqlite_to_uint64(sqlite3_stmt *s, int iCol)
{
return (u64) sqlite3_column_int64(s, iCol);
}
inline float sqlite_to_float(sqlite3_stmt *s, int iCol)
{
return (float) sqlite3_column_double(s, iCol);
}
inline const v3f sqlite_to_v3f(sqlite3_stmt *s, int iCol)
{
return v3f(sqlite_to_float(s, iCol), sqlite_to_float(s, iCol + 1),
sqlite_to_float(s, iCol + 2));
}
// Query verifiers helpers
inline void sqlite3_vrfy(int s, const std::string &m = "", int r = SQLITE_OK) const
{
if (s != r)
throw DatabaseException(m + ": " + sqlite3_errmsg(m_database));
}
inline void sqlite3_vrfy(const int s, const int r, const std::string &m = "") const
{
sqlite3_vrfy(s, m, r);
}
// Create the database structure
virtual void createDatabase() = 0;
virtual void initStatements() = 0;
sqlite3 *m_database = nullptr;
private:
// Open the database
void openDatabase();
bool m_initialized = false;
std::string m_savedir = "";
std::string m_dbname = "";
sqlite3_stmt *m_stmt_begin = nullptr;
sqlite3_stmt *m_stmt_end = nullptr;
s64 m_busy_handler_data[2];
static int busyHandler(void *data, int count);
};
class MapDatabaseSQLite3 : private Database_SQLite3, public MapDatabase
{
public:
MapDatabaseSQLite3(const std::string &savedir);
virtual ~MapDatabaseSQLite3();
virtual void pingDatabase() { Database_SQLite3::pingDatabase(); }
bool saveBlock(const v3s16 &pos, const std::string &data);
void loadBlock(const v3s16 &pos, std::string *block);
bool deleteBlock(const v3s16 &pos);
void listAllLoadableBlocks(std::vector<v3s16> &dst);
void beginSave() { Database_SQLite3::beginSave(); }
void endSave() { Database_SQLite3::endSave(); }
protected:
virtual void createDatabase();
virtual void initStatements();
private:
void bindPos(sqlite3_stmt *stmt, const v3s16 &pos, int index = 1);
// Map
sqlite3_stmt *m_stmt_read = nullptr;
sqlite3_stmt *m_stmt_write = nullptr;
sqlite3_stmt *m_stmt_list = nullptr;
sqlite3_stmt *m_stmt_delete = nullptr;
};
class PlayerDatabaseSQLite3 : private Database_SQLite3, public PlayerDatabase
{
public:
PlayerDatabaseSQLite3(const std::string &savedir);
virtual ~PlayerDatabaseSQLite3();
virtual void pingDatabase() { Database_SQLite3::pingDatabase(); }
void savePlayer(RemotePlayer *player);
bool loadPlayer(RemotePlayer *player, PlayerSAO *sao);
bool removePlayer(const std::string &name);
void listPlayers(std::vector<std::string> &res);
protected:
virtual void createDatabase();
virtual void initStatements();
private:
bool playerDataExists(const std::string &name);
// Players
sqlite3_stmt *m_stmt_player_load = nullptr;
sqlite3_stmt *m_stmt_player_add = nullptr;
sqlite3_stmt *m_stmt_player_update = nullptr;
sqlite3_stmt *m_stmt_player_remove = nullptr;
sqlite3_stmt *m_stmt_player_list = nullptr;
sqlite3_stmt *m_stmt_player_load_inventory = nullptr;
sqlite3_stmt *m_stmt_player_load_inventory_items = nullptr;
sqlite3_stmt *m_stmt_player_add_inventory = nullptr;
sqlite3_stmt *m_stmt_player_add_inventory_items = nullptr;
sqlite3_stmt *m_stmt_player_remove_inventory = nullptr;
sqlite3_stmt *m_stmt_player_remove_inventory_items = nullptr;
sqlite3_stmt *m_stmt_player_metadata_load = nullptr;
sqlite3_stmt *m_stmt_player_metadata_remove = nullptr;
sqlite3_stmt *m_stmt_player_metadata_add = nullptr;
};
class AuthDatabaseSQLite3 : private Database_SQLite3, public AuthDatabase
{
public:
AuthDatabaseSQLite3(const std::string &savedir);
virtual ~AuthDatabaseSQLite3();
virtual void pingDatabase() { Database_SQLite3::pingDatabase(); }
virtual bool getAuth(const std::string &name, AuthEntry &res);
virtual bool saveAuth(const AuthEntry &authEntry);
virtual bool createAuth(AuthEntry &authEntry);
virtual bool deleteAuth(const std::string &name);
virtual void listNames(std::vector<std::string> &res);
virtual void reload();
protected:
virtual void createDatabase();
virtual void initStatements();
private:
virtual void writePrivileges(const AuthEntry &authEntry);
sqlite3_stmt *m_stmt_read = nullptr;
sqlite3_stmt *m_stmt_write = nullptr;
sqlite3_stmt *m_stmt_create = nullptr;
sqlite3_stmt *m_stmt_delete = nullptr;
sqlite3_stmt *m_stmt_list_names = nullptr;
sqlite3_stmt *m_stmt_read_privs = nullptr;
sqlite3_stmt *m_stmt_write_privs = nullptr;
sqlite3_stmt *m_stmt_delete_privs = nullptr;
sqlite3_stmt *m_stmt_last_insert_rowid = nullptr;
};
|