From dd9917807a390b31c30a60bdb7fc7910c693aed6 Mon Sep 17 00:00:00 2001 From: Botanic Date: Tue, 18 Jun 2013 21:53:08 -0700 Subject: [PATCH 01/10] removed old file --HG-- branch : rc-botanic-webdev --- .../ryzom_ams/www/html/autoload/register.php | 71 ------------------- 1 file changed, 71 deletions(-) delete mode 100644 code/ryzom/tools/server/ryzom_ams/www/html/autoload/register.php diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/autoload/register.php b/code/ryzom/tools/server/ryzom_ams/www/html/autoload/register.php deleted file mode 100644 index e25b8b244..000000000 --- a/code/ryzom/tools/server/ryzom_ams/www/html/autoload/register.php +++ /dev/null @@ -1,71 +0,0 @@ - $_POST["Username"], - 'pass' => $_POST["Password"], - 'mail' => $_POST["Email"], - 'init' => $_POST["Email"], - 'unhashpass' => $_POST["Password"], - 'status' => 1, - 'access' => REQUEST_TIME - ); - user_save( NULL, $edit ); - header( 'Location: email_sent.php' ); - exit; - }else{ - $pageElements = array( - 'GAME_NAME' => $GAME_NAME, - 'WELCOME_MESSAGE' => $WELCOME_MESSAGE, - 'USERNAME' => $user, - 'PASSWORD' => $pass, - 'CPASSWORD' => $cpass, - 'EMAIL' => $email - ); - if ( $user != "success" ){ - $pageElements['USERNAME_ERROR'] = 'TRUE'; - }else{ - $pageElements['USERNAME_ERROR'] = 'FALSE'; - } - - if ( $pass != "success" ){ - $pageElements['PASSWORD_ERROR'] = 'TRUE'; - }else{ - $pageElements['PASSWORD_ERROR'] = 'FALSE'; - } - if ( $cpass != "success" ){ - $pageElements['CPASSWORD_ERROR'] = 'TRUE'; - }else{ - $pageElements['CPASSWORD_ERROR'] = 'FALSE'; - } - if ( $email != "success" ){ - $pageElements['EMAIL_ERROR'] = 'TRUE'; - }else{ - $pageElements['EMAIL_ERROR'] = 'FALSE'; - } - if ( isset( $_POST["TaC"] ) ){ - $pageElements['TAC_ERROR'] = 'FALSE'; - }else{ - $pageElements['TAC_ERROR'] = 'TRUE'; - } - if ( helpers :: check_if_game_client() ){ - helpers :: loadtemplate( 'register', $pageElements ); - }else{ - helpers :: loadtemplate( 'register', $pageElements ); - } - } From 5e99ada81fdcea35da090a985e9746b171b7d314 Mon Sep 17 00:00:00 2001 From: Botanic Date: Mon, 1 Jul 2013 03:01:54 -0700 Subject: [PATCH 02/10] blank pass for sql --HG-- branch : rc-botanic-webdev --- code/ryzom/tools/server/ryzom_ams/www/config.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/ryzom/tools/server/ryzom_ams/www/config.php b/code/ryzom/tools/server/ryzom_ams/www/config.php index 747ae8414..2ecaa7eaa 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/config.php +++ b/code/ryzom/tools/server/ryzom_ams/www/config.php @@ -12,14 +12,14 @@ $WEBDBHOST = 'localhost'; $WEBDBPORT = '3306'; $WEBDBNAME = 'ryzom_ams'; $WEBDBUSERNAME = 'root'; -$WEBDBPASSWORD = 'lol123' ; +$WEBDBPASSWORD = '' ; //the ams_lib db $LIBDBHOST = 'localhost'; $LIBDBPORT = '3306'; $LIBDBNAME = 'ryzom_ams_lib'; $LIBDBUSERNAME = 'root'; -$LIBDBPASSWORD = 'lol123' ; +$LIBDBPASSWORD = '' ; //the shard db $SHARDDBHOST = 'localhost' ; From 32c729f38ef0a311b7412da67572519fbc6896ee Mon Sep 17 00:00:00 2001 From: Botanic Date: Mon, 21 Oct 2013 20:05:16 -0700 Subject: [PATCH 03/10] Moved Android app --HG-- branch : rc-botanic-webdev --- .../server/ryzom_ams/android_app/.classpath | 9 ++++ .../server/ryzom_ams/android_app/.project | 33 +++++++++++++++ .../.settings/org.eclipse.jdt.core.prefs | 12 ++++++ .../ryzom_ams/android_app/AndroidManifest.xml | 29 +++++++++++++ .../gen/com/mkyong/android/BuildConfig.java | 6 +++ .../android_app/gen/com/mkyong/android/R.java | 25 +++++++++++ .../{assets => }/android_app/info.txt | 0 .../server/ryzom_ams/android_app/proguard.cfg | 40 ++++++++++++++++++ .../ryzom_ams/android_app/project.properties | 11 +++++ .../res/drawable-hdpi/ic_launcher.png | Bin 0 -> 4147 bytes .../res/drawable-ldpi/ic_launcher.png | Bin 0 -> 1723 bytes .../android_app/res/drawable/ic_launcher.png | Bin 0 -> 2574 bytes .../ryzom_ams/android_app/res/layout/main.xml | 7 +++ .../android_app/res/values/strings.xml | 4 ++ .../src/com/mkyong/android/MainActivity.java | 22 ++++++++++ .../assets/android_app/Ryzom_Core_AMS.7z | Bin 25758 -> 0 bytes 16 files changed, 198 insertions(+) create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/.classpath create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/.project create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/.settings/org.eclipse.jdt.core.prefs create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/AndroidManifest.xml create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/gen/com/mkyong/android/BuildConfig.java create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/gen/com/mkyong/android/R.java rename code/ryzom/tools/server/ryzom_ams/{assets => }/android_app/info.txt (100%) create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/proguard.cfg create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/project.properties create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/res/drawable-hdpi/ic_launcher.png create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/res/drawable-ldpi/ic_launcher.png create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/res/drawable/ic_launcher.png create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/res/layout/main.xml create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/res/values/strings.xml create mode 100644 code/ryzom/tools/server/ryzom_ams/android_app/src/com/mkyong/android/MainActivity.java delete mode 100644 code/ryzom/tools/server/ryzom_ams/assets/android_app/Ryzom_Core_AMS.7z diff --git a/code/ryzom/tools/server/ryzom_ams/android_app/.classpath b/code/ryzom/tools/server/ryzom_ams/android_app/.classpath new file mode 100644 index 000000000..c3c8602bb --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/android_app/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/code/ryzom/tools/server/ryzom_ams/android_app/.project b/code/ryzom/tools/server/ryzom_ams/android_app/.project new file mode 100644 index 000000000..ba01a3a61 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/android_app/.project @@ -0,0 +1,33 @@ + + + MyAndroidApp + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/code/ryzom/tools/server/ryzom_ams/android_app/.settings/org.eclipse.jdt.core.prefs b/code/ryzom/tools/server/ryzom_ams/android_app/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..2a856569f --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/android_app/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Tue Feb 21 13:19:14 SGT 2012 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/code/ryzom/tools/server/ryzom_ams/android_app/AndroidManifest.xml b/code/ryzom/tools/server/ryzom_ams/android_app/AndroidManifest.xml new file mode 100644 index 000000000..70e45aa6c --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/android_app/AndroidManifest.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/code/ryzom/tools/server/ryzom_ams/android_app/gen/com/mkyong/android/BuildConfig.java b/code/ryzom/tools/server/ryzom_ams/android_app/gen/com/mkyong/android/BuildConfig.java new file mode 100644 index 000000000..b068a863d --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/android_app/gen/com/mkyong/android/BuildConfig.java @@ -0,0 +1,6 @@ +/** Automatically generated file. DO NOT MODIFY */ +package com.mkyong.android; + +public final class BuildConfig { + public final static boolean DEBUG = true; +} \ No newline at end of file diff --git a/code/ryzom/tools/server/ryzom_ams/android_app/gen/com/mkyong/android/R.java b/code/ryzom/tools/server/ryzom_ams/android_app/gen/com/mkyong/android/R.java new file mode 100644 index 000000000..a451800e7 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/android_app/gen/com/mkyong/android/R.java @@ -0,0 +1,25 @@ +/* AUTO-GENERATED FILE. DO NOT MODIFY. + * + * This class was automatically generated by the + * aapt tool from the resource data it found. It + * should not be modified by hand. + */ + +package com.mkyong.android; + +public final class R { + public static final class attr { + } + public static final class drawable { + public static final int ic_launcher=0x7f020000; + } + public static final class id { + public static final int webView1=0x7f050000; + } + public static final class layout { + public static final int main=0x7f030000; + } + public static final class string { + public static final int app_name=0x7f040000; + } +} diff --git a/code/ryzom/tools/server/ryzom_ams/assets/android_app/info.txt b/code/ryzom/tools/server/ryzom_ams/android_app/info.txt similarity index 100% rename from code/ryzom/tools/server/ryzom_ams/assets/android_app/info.txt rename to code/ryzom/tools/server/ryzom_ams/android_app/info.txt diff --git a/code/ryzom/tools/server/ryzom_ams/android_app/proguard.cfg b/code/ryzom/tools/server/ryzom_ams/android_app/proguard.cfg new file mode 100644 index 000000000..b1cdf17b5 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/android_app/proguard.cfg @@ -0,0 +1,40 @@ +-optimizationpasses 5 +-dontusemixedcaseclassnames +-dontskipnonpubliclibraryclasses +-dontpreverify +-verbose +-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* + +-keep public class * extends android.app.Activity +-keep public class * extends android.app.Application +-keep public class * extends android.app.Service +-keep public class * extends android.content.BroadcastReceiver +-keep public class * extends android.content.ContentProvider +-keep public class * extends android.app.backup.BackupAgentHelper +-keep public class * extends android.preference.Preference +-keep public class com.android.vending.licensing.ILicensingService + +-keepclasseswithmembernames class * { + native ; +} + +-keepclasseswithmembers class * { + public (android.content.Context, android.util.AttributeSet); +} + +-keepclasseswithmembers class * { + public (android.content.Context, android.util.AttributeSet, int); +} + +-keepclassmembers class * extends android.app.Activity { + public void *(android.view.View); +} + +-keepclassmembers enum * { + public static **[] values(); + public static ** valueOf(java.lang.String); +} + +-keep class * implements android.os.Parcelable { + public static final android.os.Parcelable$Creator *; +} diff --git a/code/ryzom/tools/server/ryzom_ams/android_app/project.properties b/code/ryzom/tools/server/ryzom_ams/android_app/project.properties new file mode 100644 index 000000000..73fc66102 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/android_app/project.properties @@ -0,0 +1,11 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "ant.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=android-18 diff --git a/code/ryzom/tools/server/ryzom_ams/android_app/res/drawable-hdpi/ic_launcher.png b/code/ryzom/tools/server/ryzom_ams/android_app/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8074c4c571b8cd19e27f4ee5545df367420686d7 GIT binary patch literal 4147 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 literal 0 HcmV?d00001 diff --git a/code/ryzom/tools/server/ryzom_ams/android_app/res/drawable-ldpi/ic_launcher.png b/code/ryzom/tools/server/ryzom_ams/android_app/res/drawable-ldpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..1095584ec21f71cd0afc9e0993aa2209671b590c GIT binary patch literal 1723 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 + \ No newline at end of file diff --git a/code/ryzom/tools/server/ryzom_ams/android_app/res/values/strings.xml b/code/ryzom/tools/server/ryzom_ams/android_app/res/values/strings.xml new file mode 100644 index 000000000..09b33f582 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/android_app/res/values/strings.xml @@ -0,0 +1,4 @@ + + + Ryzom Core AMS + \ No newline at end of file diff --git a/code/ryzom/tools/server/ryzom_ams/android_app/src/com/mkyong/android/MainActivity.java b/code/ryzom/tools/server/ryzom_ams/android_app/src/com/mkyong/android/MainActivity.java new file mode 100644 index 000000000..260856c52 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/android_app/src/com/mkyong/android/MainActivity.java @@ -0,0 +1,22 @@ +package com.mkyong.android; + +import android.app.Activity; +import android.os.Bundle; +import android.webkit.WebView; +import android.webkit.WebViewClient; + +public class MainActivity extends Activity { + + private WebView webView; + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.main); + + webView = (WebView) findViewById(R.id.webView1); + webView.setWebViewClient(new WebViewClient()); + webView.getSettings().setJavaScriptEnabled(true); + webView.loadUrl("http://shard.ryzomcore.org/ams/index.php"); + + } +} diff --git a/code/ryzom/tools/server/ryzom_ams/assets/android_app/Ryzom_Core_AMS.7z b/code/ryzom/tools/server/ryzom_ams/assets/android_app/Ryzom_Core_AMS.7z deleted file mode 100644 index ed9366564e343e913875e366b358700ed10b93e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25758 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

OzVa@vL6)9JSu@#gz&p_wKkigk-C zWc0CrS%1)Sg1q%-e&ky}t7KSO*&?oebDLE7g0J|n@zkwv0LZD)0(yk*|_+( zTC>VHVShU3(wxep^O55ks`&+&AVDg_hok7>u@I%0K!%J!cKoa|>D3EA{Pz)ilJcJr zg?=vzAY!APHaCeFg$i$E7ytkal&1;-nu`l+000mA2O0nX From 7a7191e9810065c12bd2c2777179c859f427e5e9 Mon Sep 17 00:00:00 2001 From: Botanic Date: Mon, 21 Oct 2013 23:02:01 -0700 Subject: [PATCH 04/10] added installer for when database is missing --HG-- branch : rc-botanic-webdev --- .../ryzom_ams/ams_lib/autoload/dblayer.php | 38 ++++++++++------ .../ryzom_ams/ams_lib/translations/en.ini | 4 ++ .../server/ryzom_ams/www/config.default.php | 4 +- .../tools/server/ryzom_ams/www/html/index.php | 10 ++++- .../server/ryzom_ams/www/html/sql/install.php | 4 +- .../ryzom_ams/www/html/templates/install.tpl | 43 +++++++++++++++++++ 6 files changed, 85 insertions(+), 18 deletions(-) create mode 100644 code/ryzom/tools/server/ryzom_ams/www/html/templates/install.tpl diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/dblayer.php b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/dblayer.php index af826d084..58ea7b80e 100644 --- a/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/dblayer.php +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/autoload/dblayer.php @@ -14,19 +14,33 @@ class DBLayer{ * Instantiates the PDO object attribute by connecting to the arguments matching database(the db info is stored in the $cfg global var) * @param $db String, the name of the databases entry in the $cfg global var. */ - function __construct($db) + function __construct($db, $dbn = null) { - global $cfg; - $dsn = "mysql:"; - $dsn .= "host=". $cfg['db'][$db]['host'].";"; - $dsn .= "dbname=". $cfg['db'][$db]['name'].";"; - $dsn .= "port=". $cfg['db'][$db]['port'].";"; - - $opt = array( - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, - PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC - ); - $this->PDO = new PDO($dsn,$cfg['db'][$db]['user'],$cfg['db'][$db]['pass'], $opt); + if ($db != "install"){ + + global $cfg; + $dsn = "mysql:"; + $dsn .= "host=". $cfg['db'][$db]['host'].";"; + $dsn .= "dbname=". $cfg['db'][$db]['name'].";"; + $dsn .= "port=". $cfg['db'][$db]['port'].";"; + + $opt = array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC + ); + $this->PDO = new PDO($dsn,$cfg['db'][$db]['user'],$cfg['db'][$db]['pass'], $opt); + } else { + global $cfg; + $dsn = "mysql:"; + $dsn .= "host=". $cfg['db'][$dbn]['host'].";"; + $dsn .= "port=". $cfg['db'][$dbn]['port'].";"; + + $opt = array( + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC + ); + $this->PDO = new PDO($dsn,$_POST['Username'],$_POST['Password'], $opt); + } } diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/translations/en.ini b/code/ryzom/tools/server/ryzom_ams/ams_lib/translations/en.ini index 8f1f9379b..865a842c4 100644 --- a/code/ryzom/tools/server/ryzom_ams/ams_lib/translations/en.ini +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/translations/en.ini @@ -1,6 +1,10 @@ ; This is a sample configuration file ; Comments start with ';', as in php.ini +[install] +login_info = "Please enter your MySQL Username and Password to install the database." +login_here = "here" + [dashboard] home_title = "Introduction" home_info = "Welcome to the Ryzom Core - Account Management System" diff --git a/code/ryzom/tools/server/ryzom_ams/www/config.default.php b/code/ryzom/tools/server/ryzom_ams/www/config.default.php index c559b8b2c..91a370a4d 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/config.default.php +++ b/code/ryzom/tools/server/ryzom_ams/www/config.default.php @@ -88,8 +88,8 @@ $AMS_CACHEDIR = $AMS_LIB . '/cache'; $SITEBASE = dirname( __FILE__ ) . '/html/' ; //the paths to your website url -$BASE_WEBPATH = 'http://localhost:40917'; -$IMAGELOC_WEBPATH = 'http://localhost:40917/img'; +$BASE_WEBPATH = $_SERVER['REQUEST_URI'].; +$IMAGELOC_WEBPATH = $_SERVER['REQUEST_URI'].'/img'; $WEBPATH = $BASE_WEBPATH . '/index.php'; $INGAME_WEBPATH = $BASE_WEBPATH . '/index.php'; $CONFIG_PATH = dirname( __FILE__ ); diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/index.php b/code/ryzom/tools/server/ryzom_ams/www/html/index.php index 40b4e6535..aec5d1825 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/html/index.php +++ b/code/ryzom/tools/server/ryzom_ams/www/html/index.php @@ -13,8 +13,14 @@ //load required pages and turn error reporting on/off error_reporting(E_ALL); ini_set('display_errors', 'on'); -require( '../config.php' ); -require( '../../ams_lib/libinclude.php' ); +require_once( '../../ams_lib/libinclude.php' ); +if (!@include '../config.php') { + //if config doesnt exist run setup + require( 'install/libsetup.php' ); +} else { + //if config exists then include it + require( '../config.php' ); +} session_start(); //Decide what page to load diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php b/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php index 0130f1a65..dbee8c7ba 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php +++ b/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php @@ -6,8 +6,8 @@ */ //require the pages that are being needed. - require( '../../config.php' ); - require( '../../../ams_lib/libinclude.php' ); + require_once( '../../config.php' ); + require_once( '../../../ams_lib/libinclude.php' ); ini_set( "display_errors", true ); error_reporting( E_ALL ); diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/templates/install.tpl b/code/ryzom/tools/server/ryzom_ams/www/html/templates/install.tpl new file mode 100644 index 000000000..46d2996d5 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/www/html/templates/install.tpl @@ -0,0 +1,43 @@ +{extends file="layout.tpl"} +{block name=content} + +

+ +
+ +
+ +
+{/block} + From 39199221a253c2cca8a6c6e49288e4f8a5977195 Mon Sep 17 00:00:00 2001 From: Botanic Date: Mon, 21 Oct 2013 23:03:12 -0700 Subject: [PATCH 05/10] added config.php to hgignore --HG-- branch : rc-botanic-webdev --- .hgignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.hgignore b/.hgignore index 42cd85ac7..f4de35608 100644 --- a/.hgignore +++ b/.hgignore @@ -223,3 +223,6 @@ code/ryzom/server/src/tick_service/tick_service # WebTT temp dir code/ryzom/tools/server/www/webtt/app/tmp code\ryzom\tools\server\ryzom_ams\old + +# AMS ignore +code/ryzom/tools/server/ryzom_ams/www/config.php From 457f2f703fe805ec04dec29275b89f34ab944a77 Mon Sep 17 00:00:00 2001 From: Botanic Date: Mon, 21 Oct 2013 23:14:26 -0700 Subject: [PATCH 06/10] updated TOS url to http://www.gnu.org/licenses/agpl-3.0.html --HG-- branch : rc-botanic-webdev --- code/ryzom/tools/server/ryzom_ams/www/config.default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/ryzom/tools/server/ryzom_ams/www/config.default.php b/code/ryzom/tools/server/ryzom_ams/www/config.default.php index 91a370a4d..cb6641609 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/config.default.php +++ b/code/ryzom/tools/server/ryzom_ams/www/config.default.php @@ -66,7 +66,7 @@ $MAIL_DIR = "/home/username/mail"; $MAIL_LOG_PATH = "/home/username/mail/cron_mail.log"; //terms of service url location -$TOS_URL ="http://heregoesyourtos.com"; +$TOS_URL ="http://www.gnu.org/licenses/agpl-3.0.html"; //crypt is being used by encrypting & decrypting of the IMAP password of the supportgroups $cfg['crypt']['key'] = 'Sup3rS3cr3tStuff'; From fd012e9cda2e928088f10202d7787994e38cf65b Mon Sep 17 00:00:00 2001 From: Botanic Date: Mon, 21 Oct 2013 23:31:13 -0700 Subject: [PATCH 07/10] added installer --HG-- branch : rc-botanic-webdev --- .../ryzom_ams/www/html/installer/libsetup.php | 504 ++++++++++++++++++ 1 file changed, 504 insertions(+) create mode 100644 code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php b/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php new file mode 100644 index 000000000..f4a6a50b4 --- /dev/null +++ b/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php @@ -0,0 +1,504 @@ +executeWithoutParams($sql); + + //SETUP THE AMS_LIB DB + $dbl = new DBLayer("install", "lib"); + + $sql = " + CREATE DATABASE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`; + USE `" . $cfg['db']['lib']['name'] ."`; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ams_querycache`; + + CREATE TABLE ams_querycache ( + `SID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , + `type` VARCHAR( 64 ) NOT NULL , + `query` VARCHAR( 512 ) NOT NULL, + `db` VARCHAR( 80 ) NOT NULL + ); + + -- ----------------------------------------------------------------------------------------------------------------------- + -- ----------------------------------------------------------------------------------------------------------------------- + + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_log` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`tagged` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`tag` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_support_group` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_group` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_group` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_info` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`email` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`forwarded` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`assigned` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_reply` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_content` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`support_group` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_category` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_user` ; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_category` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_category` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_category` ( + `TCategoryId` INT UNSIGNED NOT NULL AUTO_INCREMENT , + `Name` VARCHAR(45) NOT NULL , + PRIMARY KEY (`TCategoryId`) , + UNIQUE INDEX `Name_UNIQUE` (`Name` ASC) ) + ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_user` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_user` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_user` ( + `TUserId` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT , + `Permission` INT(3) NOT NULL DEFAULT 1 , + `ExternId` INT(10) UNSIGNED NOT NULL , + PRIMARY KEY (`TUserId`) ) + ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket` ( + `TId` INT UNSIGNED NOT NULL AUTO_INCREMENT , + `Timestamp` TIMESTAMP NOT NULL , + `Title` VARCHAR(120) NOT NULL , + `Status` INT NULL DEFAULT 0 , + `Queue` INT NULL DEFAULT 0 , + `Ticket_Category` INT UNSIGNED NOT NULL , + `Author` INT UNSIGNED NOT NULL , + `Priority` INT(3) NULL DEFAULT 0 , + PRIMARY KEY (`TId`) , + INDEX `fk_ticket_ticket_category_idx` (`Ticket_Category` ASC) , + INDEX `fk_ticket_ams_user_idx` (`Author` ASC) , + CONSTRAINT `fk_ticket_ticket_category` + FOREIGN KEY (`Ticket_Category` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_category` (`TCategoryId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_ticket_ams_user` + FOREIGN KEY (`Author` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION) + ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`assigned` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`assigned` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`assigned` ( + `Ticket` INT UNSIGNED NOT NULL , + `User` INT UNSIGNED NOT NULL , + INDEX `fk_assigned_ticket_idx` (`Ticket` ASC) , + PRIMARY KEY (`Ticket`, `User`) , + INDEX `fk_assigned_ams_user_idx` (`User` ASC) , + CONSTRAINT `fk_assigned_ticket` + FOREIGN KEY (`Ticket` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_assigned_ams_user` + FOREIGN KEY (`User` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION) + ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`tag` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`tag` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`tag` ( + `TagId` INT UNSIGNED NOT NULL AUTO_INCREMENT , + `Value` VARCHAR(60) NOT NULL , + PRIMARY KEY (`TagId`) , + UNIQUE INDEX `Value_UNIQUE` (`Value` ASC) ) + ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`tagged` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`tagged` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`tagged` ( + `Ticket` INT UNSIGNED NOT NULL , + `Tag` INT UNSIGNED NOT NULL , + PRIMARY KEY (`Ticket`, `Tag`) , + INDEX `fk_tagged_tag_idx` (`Tag` ASC) , + CONSTRAINT `fk_tagged_ticket` + FOREIGN KEY (`Ticket` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_tagged_tag` + FOREIGN KEY (`Tag` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`tag` (`TagId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION) + ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_content` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_content` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_content` ( + `TContentId` INT UNSIGNED NOT NULL AUTO_INCREMENT , + `Content` TEXT NULL , + PRIMARY KEY (`TContentId`) ) + ENGINE = InnoDB + DEFAULT CHARACTER SET = utf8; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_reply` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_reply` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_reply` ( + `TReplyId` INT UNSIGNED NOT NULL AUTO_INCREMENT , + `Ticket` INT UNSIGNED NOT NULL , + `Author` INT UNSIGNED NOT NULL , + `Content` INT UNSIGNED NOT NULL , + `Timestamp` TIMESTAMP NULL , + `Hidden` TINYINT(1) NULL DEFAULT 0 , + PRIMARY KEY (`TReplyId`) , + INDEX `fk_ticket_reply_ticket_idx` (`Ticket` ASC) , + INDEX `fk_ticket_reply_ams_user_idx` (`Author` ASC) , + INDEX `fk_ticket_reply_content_idx` (`Content` ASC) , + CONSTRAINT `fk_ticket_reply_ticket` + FOREIGN KEY (`Ticket` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_ticket_reply_ams_user` + FOREIGN KEY (`Author` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_ticket_reply_ticket_content` + FOREIGN KEY (`Content` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_content` (`TContentId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION) + ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_group` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_group` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_group` ( + `TGroupId` INT UNSIGNED NOT NULL AUTO_INCREMENT , + `Title` VARCHAR(80) NOT NULL , + PRIMARY KEY (`TGroupId`) , + UNIQUE INDEX `Title_UNIQUE` (`Title` ASC) ) + ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`in_group` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_group` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_group` ( + `Ticket_Group` INT UNSIGNED NOT NULL , + `Ticket` INT UNSIGNED NOT NULL , + PRIMARY KEY (`Ticket_Group`, `Ticket`) , + INDEX `fk_in_group_ticket_group_idx` (`Ticket_Group` ASC) , + INDEX `fk_in_group_ticket_idx` (`Ticket` ASC) , + CONSTRAINT `fk_in_group_ticket_group` + FOREIGN KEY (`Ticket_Group` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_group` (`TGroupId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_in_group_ticket` + FOREIGN KEY (`Ticket` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION) + ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_log` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_log` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_log` ( + `TLogId` INT UNSIGNED NOT NULL AUTO_INCREMENT , + `Timestamp` TIMESTAMP NOT NULL , + `Query` VARCHAR(255) NOT NULL , + `Ticket` INT UNSIGNED NOT NULL , + `Author` INT(10) UNSIGNED NULL , + PRIMARY KEY (`TLogId`) , + INDEX `fk_ticket_log_ticket1` (`Ticket` ASC) , + INDEX `fk_ticket_log_ticket_user1` (`Author` ASC) , + CONSTRAINT `fk_ticket_log_ticket1` + FOREIGN KEY (`Ticket` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_ticket_log_ticket_user1` + FOREIGN KEY (`Author` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION) + ENGINE = InnoDB; + + INSERT IGNORE INTO `" . $cfg['db']['lib']['name'] ."`.`ticket_category` (`Name`) VALUES ('Uncategorized'),('Hacking'),('Ingame-Bug'),('Website-Bug'),('Installation'); + + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`support_group` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`support_group` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`support_group` ( + `SGroupId` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT , + `Name` VARCHAR(22) NOT NULL , + `Tag` VARCHAR(7) NOT NULL , + `GroupEmail` VARCHAR(45) NULL , + `IMAP_MailServer` VARCHAR(60) NULL , + `IMAP_Username` VARCHAR(45) NULL , + `IMAP_Password` VARCHAR(90) NULL , + PRIMARY KEY (`SGroupId`) , + UNIQUE INDEX `Name_UNIQUE` (`Name` ASC) , + UNIQUE INDEX `Tag_UNIQUE` (`Tag` ASC) ) + ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`in_support_group` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_support_group` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_support_group` ( + `User` INT(10) UNSIGNED NOT NULL , + `Group` INT(10) UNSIGNED NOT NULL , + INDEX `fk_in_support_group_ticket_user1` (`User` ASC) , + INDEX `fk_in_support_group_support_group1` (`Group` ASC) , + CONSTRAINT `fk_in_support_group_ticket_user1` + FOREIGN KEY (`User` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_in_support_group_support_group1` + FOREIGN KEY (`Group` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`support_group` (`SGroupId` ) + ON DELETE CASCADE + ON UPDATE NO ACTION) + ENGINE = InnoDB; + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`forwarded` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`forwarded` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`forwarded` ( + `Group` INT(10) UNSIGNED NOT NULL , + `Ticket` INT UNSIGNED NOT NULL , + INDEX `fk_forwarded_support_group1` (`Group` ASC) , + INDEX `fk_forwarded_ticket1` (`Ticket` ASC) , + CONSTRAINT `fk_forwarded_support_group1` + FOREIGN KEY (`Group` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`support_group` (`SGroupId` ) + ON DELETE CASCADE + ON UPDATE NO ACTION, + CONSTRAINT `fk_forwarded_ticket1` + FOREIGN KEY (`Ticket` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION) + ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`email` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`email` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`email` ( + `MailId` INT NOT NULL AUTO_INCREMENT , + `Recipient` VARCHAR(50) NULL , + `Subject` VARCHAR(60) NULL , + `Body` VARCHAR(400) NULL , + `Status` VARCHAR(45) NULL , + `Attempts` VARCHAR(45) NULL DEFAULT 0 , + `UserId` INT(10) UNSIGNED NULL , + `MessageId` VARCHAR(45) NULL , + `TicketId` INT UNSIGNED NULL , + `Sender` INT(10) UNSIGNED NULL , + PRIMARY KEY (`MailId`) , + INDEX `fk_email_ticket_user2` (`UserId` ASC) , + INDEX `fk_email_ticket1` (`TicketId` ASC) , + INDEX `fk_email_support_group1` (`Sender` ASC) , + CONSTRAINT `fk_email_ticket_user2` + FOREIGN KEY (`UserId` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_email_ticket1` + FOREIGN KEY (`TicketId` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT `fk_email_support_group1` + FOREIGN KEY (`Sender` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`support_group` (`SGroupId` ) + ON DELETE CASCADE + ON UPDATE NO ACTION) + ENGINE = InnoDB; + + + -- ----------------------------------------------------- + -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_info` + -- ----------------------------------------------------- + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_info` ; + + CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_info` ( + `TInfoId` INT UNSIGNED NOT NULL AUTO_INCREMENT , + `Ticket` INT UNSIGNED NOT NULL , + `ShardId` INT NULL , + `UserPosition` VARCHAR(65) NULL , + `ViewPosition` VARCHAR(65) NULL , + `ClientVersion` VARCHAR(65) NULL , + `PatchVersion` VARCHAR(65) NULL , + `ServerTick` VARCHAR(40) NULL , + `ConnectState` VARCHAR(40) NULL , + `LocalAddress` VARCHAR(70) NULL , + `Memory` VARCHAR(60) NULL , + `OS` VARCHAR(120) NULL , + `Processor` VARCHAR(120) NULL , + `CPUID` VARCHAR(50) NULL , + `CpuMask` VARCHAR(50) NULL , + `HT` VARCHAR(35) NULL , + `NeL3D` VARCHAR(120) NULL , + `PlayerName` VARCHAR(45) NULL , + `UserId` INT NULL , + `TimeInGame` VARCHAR(50) NULL , + PRIMARY KEY (`TInfoId`) , + INDEX `fk_ticket_info_ticket1` (`Ticket` ASC) , + CONSTRAINT `fk_ticket_info_ticket1` + FOREIGN KEY (`Ticket` ) + REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) + ON DELETE NO ACTION + ON UPDATE NO ACTION) + ENGINE = InnoDB; + GRANT ALL ON `" . $cfg['db']['lib']['name'] ."`.* TO `" . $cfg['db']['lib']['user'] ."`@localhost; + "; + $dbl->executeWithoutParams($sql); + print "The Lib & Web database were correctly installed!
"; + + //Now create an admin account! + $hashpass = crypt("admin", Users::generateSALT()); + $params = array( + 'name' => "admin", + 'pass' => $hashpass, + 'mail' => "admin@admin.com", + 'permission' => 3, + 'lang' => "en" + ); + try{ + $dbw = new DBLayer("web"); + $user_id = $dbw->executeReturnId("INSERT INTO ams_user (Login, Password, Email, Permission, Language) VALUES (:name, :pass, :mail, :permission, :lang)",$params); + Users::createUser($params, $user_id); + $dbl = new DBLayer("lib"); + $dbl->execute("UPDATE ticket_user SET Permission = 3 WHERE TUserId = :user_id",array('user_id' => $user_id)); + print "The admin account is created, you can login with id: admin, pass: admin!"; + }catch (PDOException $e){ + print "There was an error while creating the admin account! "; + } + + + if (!file_exists('../config.php')) { + if (!copy('../config.default.php', '../config.php')) { + echo "failed to copy ../config.php ...\n"; + } + } + echo 'Reload! '; + exit; + + + + }catch (PDOException $e) { + //go to error page or something, because can't access website db + print "There was an error while installing"; + print_r($e); + } + } + From 16bd70c50aeca77b13400d1ce588844d5e057bab Mon Sep 17 00:00:00 2001 From: Botanic Date: Mon, 21 Oct 2013 23:31:58 -0700 Subject: [PATCH 08/10] remove install.php from sql --HG-- branch : rc-botanic-webdev --- .../server/ryzom_ams/www/html/sql/install.php | 481 ------------------ 1 file changed, 481 deletions(-) delete mode 100644 code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php b/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php deleted file mode 100644 index dbee8c7ba..000000000 --- a/code/ryzom/tools/server/ryzom_ams/www/html/sql/install.php +++ /dev/null @@ -1,481 +0,0 @@ -executeWithoutParams($sql); - - //SETUP THE AMS_LIB DB - $dbl = new DBLayer("lib"); - $sql = " - CREATE DATABASE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`; - USE `" . $cfg['db']['lib']['name'] ."`; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ams_querycache`; - - CREATE TABLE ams_querycache ( - `SID` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , - `type` VARCHAR( 64 ) NOT NULL , - `query` VARCHAR( 512 ) NOT NULL, - `db` VARCHAR( 80 ) NOT NULL - ); - - -- ----------------------------------------------------------------------------------------------------------------------- - -- ----------------------------------------------------------------------------------------------------------------------- - - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_log` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`tagged` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`tag` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_support_group` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_group` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_group` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_info` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`email` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`forwarded` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`assigned` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_reply` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_content` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`support_group` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_category` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_user` ; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_category` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_category` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_category` ( - `TCategoryId` INT UNSIGNED NOT NULL AUTO_INCREMENT , - `Name` VARCHAR(45) NOT NULL , - PRIMARY KEY (`TCategoryId`) , - UNIQUE INDEX `Name_UNIQUE` (`Name` ASC) ) - ENGINE = InnoDB; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_user` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_user` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_user` ( - `TUserId` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT , - `Permission` INT(3) NOT NULL DEFAULT 1 , - `ExternId` INT(10) UNSIGNED NOT NULL , - PRIMARY KEY (`TUserId`) ) - ENGINE = InnoDB; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket` ( - `TId` INT UNSIGNED NOT NULL AUTO_INCREMENT , - `Timestamp` TIMESTAMP NOT NULL , - `Title` VARCHAR(120) NOT NULL , - `Status` INT NULL DEFAULT 0 , - `Queue` INT NULL DEFAULT 0 , - `Ticket_Category` INT UNSIGNED NOT NULL , - `Author` INT UNSIGNED NOT NULL , - `Priority` INT(3) NULL DEFAULT 0 , - PRIMARY KEY (`TId`) , - INDEX `fk_ticket_ticket_category_idx` (`Ticket_Category` ASC) , - INDEX `fk_ticket_ams_user_idx` (`Author` ASC) , - CONSTRAINT `fk_ticket_ticket_category` - FOREIGN KEY (`Ticket_Category` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_category` (`TCategoryId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - CONSTRAINT `fk_ticket_ams_user` - FOREIGN KEY (`Author` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION) - ENGINE = InnoDB; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`assigned` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`assigned` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`assigned` ( - `Ticket` INT UNSIGNED NOT NULL , - `User` INT UNSIGNED NOT NULL , - INDEX `fk_assigned_ticket_idx` (`Ticket` ASC) , - PRIMARY KEY (`Ticket`, `User`) , - INDEX `fk_assigned_ams_user_idx` (`User` ASC) , - CONSTRAINT `fk_assigned_ticket` - FOREIGN KEY (`Ticket` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - CONSTRAINT `fk_assigned_ams_user` - FOREIGN KEY (`User` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION) - ENGINE = InnoDB; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`tag` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`tag` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`tag` ( - `TagId` INT UNSIGNED NOT NULL AUTO_INCREMENT , - `Value` VARCHAR(60) NOT NULL , - PRIMARY KEY (`TagId`) , - UNIQUE INDEX `Value_UNIQUE` (`Value` ASC) ) - ENGINE = InnoDB; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`tagged` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`tagged` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`tagged` ( - `Ticket` INT UNSIGNED NOT NULL , - `Tag` INT UNSIGNED NOT NULL , - PRIMARY KEY (`Ticket`, `Tag`) , - INDEX `fk_tagged_tag_idx` (`Tag` ASC) , - CONSTRAINT `fk_tagged_ticket` - FOREIGN KEY (`Ticket` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - CONSTRAINT `fk_tagged_tag` - FOREIGN KEY (`Tag` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`tag` (`TagId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION) - ENGINE = InnoDB; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_content` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_content` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_content` ( - `TContentId` INT UNSIGNED NOT NULL AUTO_INCREMENT , - `Content` TEXT NULL , - PRIMARY KEY (`TContentId`) ) - ENGINE = InnoDB - DEFAULT CHARACTER SET = utf8; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_reply` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_reply` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_reply` ( - `TReplyId` INT UNSIGNED NOT NULL AUTO_INCREMENT , - `Ticket` INT UNSIGNED NOT NULL , - `Author` INT UNSIGNED NOT NULL , - `Content` INT UNSIGNED NOT NULL , - `Timestamp` TIMESTAMP NULL , - `Hidden` TINYINT(1) NULL DEFAULT 0 , - PRIMARY KEY (`TReplyId`) , - INDEX `fk_ticket_reply_ticket_idx` (`Ticket` ASC) , - INDEX `fk_ticket_reply_ams_user_idx` (`Author` ASC) , - INDEX `fk_ticket_reply_content_idx` (`Content` ASC) , - CONSTRAINT `fk_ticket_reply_ticket` - FOREIGN KEY (`Ticket` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - CONSTRAINT `fk_ticket_reply_ams_user` - FOREIGN KEY (`Author` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - CONSTRAINT `fk_ticket_reply_ticket_content` - FOREIGN KEY (`Content` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_content` (`TContentId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION) - ENGINE = InnoDB; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_group` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_group` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_group` ( - `TGroupId` INT UNSIGNED NOT NULL AUTO_INCREMENT , - `Title` VARCHAR(80) NOT NULL , - PRIMARY KEY (`TGroupId`) , - UNIQUE INDEX `Title_UNIQUE` (`Title` ASC) ) - ENGINE = InnoDB; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`in_group` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_group` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_group` ( - `Ticket_Group` INT UNSIGNED NOT NULL , - `Ticket` INT UNSIGNED NOT NULL , - PRIMARY KEY (`Ticket_Group`, `Ticket`) , - INDEX `fk_in_group_ticket_group_idx` (`Ticket_Group` ASC) , - INDEX `fk_in_group_ticket_idx` (`Ticket` ASC) , - CONSTRAINT `fk_in_group_ticket_group` - FOREIGN KEY (`Ticket_Group` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_group` (`TGroupId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - CONSTRAINT `fk_in_group_ticket` - FOREIGN KEY (`Ticket` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION) - ENGINE = InnoDB; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_log` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_log` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_log` ( - `TLogId` INT UNSIGNED NOT NULL AUTO_INCREMENT , - `Timestamp` TIMESTAMP NOT NULL , - `Query` VARCHAR(255) NOT NULL , - `Ticket` INT UNSIGNED NOT NULL , - `Author` INT(10) UNSIGNED NULL , - PRIMARY KEY (`TLogId`) , - INDEX `fk_ticket_log_ticket1` (`Ticket` ASC) , - INDEX `fk_ticket_log_ticket_user1` (`Author` ASC) , - CONSTRAINT `fk_ticket_log_ticket1` - FOREIGN KEY (`Ticket` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - CONSTRAINT `fk_ticket_log_ticket_user1` - FOREIGN KEY (`Author` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION) - ENGINE = InnoDB; - - INSERT IGNORE INTO `" . $cfg['db']['lib']['name'] ."`.`ticket_category` (`Name`) VALUES ('Uncategorized'),('Hacking'),('Ingame-Bug'),('Website-Bug'),('Installation'); - - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`support_group` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`support_group` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`support_group` ( - `SGroupId` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT , - `Name` VARCHAR(22) NOT NULL , - `Tag` VARCHAR(7) NOT NULL , - `GroupEmail` VARCHAR(45) NULL , - `IMAP_MailServer` VARCHAR(60) NULL , - `IMAP_Username` VARCHAR(45) NULL , - `IMAP_Password` VARCHAR(90) NULL , - PRIMARY KEY (`SGroupId`) , - UNIQUE INDEX `Name_UNIQUE` (`Name` ASC) , - UNIQUE INDEX `Tag_UNIQUE` (`Tag` ASC) ) - ENGINE = InnoDB; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`in_support_group` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_support_group` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_support_group` ( - `User` INT(10) UNSIGNED NOT NULL , - `Group` INT(10) UNSIGNED NOT NULL , - INDEX `fk_in_support_group_ticket_user1` (`User` ASC) , - INDEX `fk_in_support_group_support_group1` (`Group` ASC) , - CONSTRAINT `fk_in_support_group_ticket_user1` - FOREIGN KEY (`User` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - CONSTRAINT `fk_in_support_group_support_group1` - FOREIGN KEY (`Group` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`support_group` (`SGroupId` ) - ON DELETE CASCADE - ON UPDATE NO ACTION) - ENGINE = InnoDB; - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`forwarded` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`forwarded` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`forwarded` ( - `Group` INT(10) UNSIGNED NOT NULL , - `Ticket` INT UNSIGNED NOT NULL , - INDEX `fk_forwarded_support_group1` (`Group` ASC) , - INDEX `fk_forwarded_ticket1` (`Ticket` ASC) , - CONSTRAINT `fk_forwarded_support_group1` - FOREIGN KEY (`Group` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`support_group` (`SGroupId` ) - ON DELETE CASCADE - ON UPDATE NO ACTION, - CONSTRAINT `fk_forwarded_ticket1` - FOREIGN KEY (`Ticket` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION) - ENGINE = InnoDB; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`email` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`email` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`email` ( - `MailId` INT NOT NULL AUTO_INCREMENT , - `Recipient` VARCHAR(50) NULL , - `Subject` VARCHAR(60) NULL , - `Body` VARCHAR(400) NULL , - `Status` VARCHAR(45) NULL , - `Attempts` VARCHAR(45) NULL DEFAULT 0 , - `UserId` INT(10) UNSIGNED NULL , - `MessageId` VARCHAR(45) NULL , - `TicketId` INT UNSIGNED NULL , - `Sender` INT(10) UNSIGNED NULL , - PRIMARY KEY (`MailId`) , - INDEX `fk_email_ticket_user2` (`UserId` ASC) , - INDEX `fk_email_ticket1` (`TicketId` ASC) , - INDEX `fk_email_support_group1` (`Sender` ASC) , - CONSTRAINT `fk_email_ticket_user2` - FOREIGN KEY (`UserId` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket_user` (`TUserId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - CONSTRAINT `fk_email_ticket1` - FOREIGN KEY (`TicketId` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - CONSTRAINT `fk_email_support_group1` - FOREIGN KEY (`Sender` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`support_group` (`SGroupId` ) - ON DELETE CASCADE - ON UPDATE NO ACTION) - ENGINE = InnoDB; - - - -- ----------------------------------------------------- - -- Table `" . $cfg['db']['lib']['name'] ."`.`ticket_info` - -- ----------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_info` ; - - CREATE TABLE IF NOT EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_info` ( - `TInfoId` INT UNSIGNED NOT NULL AUTO_INCREMENT , - `Ticket` INT UNSIGNED NOT NULL , - `ShardId` INT NULL , - `UserPosition` VARCHAR(65) NULL , - `ViewPosition` VARCHAR(65) NULL , - `ClientVersion` VARCHAR(65) NULL , - `PatchVersion` VARCHAR(65) NULL , - `ServerTick` VARCHAR(40) NULL , - `ConnectState` VARCHAR(40) NULL , - `LocalAddress` VARCHAR(70) NULL , - `Memory` VARCHAR(60) NULL , - `OS` VARCHAR(120) NULL , - `Processor` VARCHAR(120) NULL , - `CPUID` VARCHAR(50) NULL , - `CpuMask` VARCHAR(50) NULL , - `HT` VARCHAR(35) NULL , - `NeL3D` VARCHAR(120) NULL , - `PlayerName` VARCHAR(45) NULL , - `UserId` INT NULL , - `TimeInGame` VARCHAR(50) NULL , - PRIMARY KEY (`TInfoId`) , - INDEX `fk_ticket_info_ticket1` (`Ticket` ASC) , - CONSTRAINT `fk_ticket_info_ticket1` - FOREIGN KEY (`Ticket` ) - REFERENCES `" . $cfg['db']['lib']['name'] ."`.`ticket` (`TId` ) - ON DELETE NO ACTION - ON UPDATE NO ACTION) - ENGINE = InnoDB; - "; - $dbl->executeWithoutParams($sql); - print "The Lib & Web database were correctly installed!
"; - - //Now create an admin account! - $hashpass = crypt("admin", Users::generateSALT()); - $params = array( - 'name' => "admin", - 'pass' => $hashpass, - 'mail' => "admin@admin.com", - 'permission' => 3, - 'lang' => "en" - ); - try{ - $dbw = new DBLayer("web"); - $user_id = $dbw->executeReturnId("INSERT INTO ams_user (Login, Password, Email, Permission, Language) VALUES (:name, :pass, :mail, :permission, :lang)",$params); - Users::createUser($params, $user_id); - $dbl = new DBLayer("lib"); - $dbl->execute("UPDATE ticket_user SET Permission = 3 WHERE TUserId = :user_id",array('user_id' => $user_id)); - print "The admin account is created, you can login with id: admin, pass: admin!"; - }catch (PDOException $e){ - print "There was an error while creating the admin account! "; - } - - - - - - - }catch (PDOException $e) { - //go to error page or something, because can't access website db - print "There was an error while installing"; - print_r($e); - } - - From 54d13d93d03bdc1de2aed632140987c66bab16b0 Mon Sep 17 00:00:00 2001 From: Botanic Date: Mon, 21 Oct 2013 23:57:27 -0700 Subject: [PATCH 09/10] Fixed path bugs --HG-- branch : rc-botanic-webdev --- code/ryzom/tools/server/ryzom_ams/ams_lib/translations/en.ini | 2 +- code/ryzom/tools/server/ryzom_ams/www/config.default.php | 2 +- code/ryzom/tools/server/ryzom_ams/www/html/index.php | 2 +- .../tools/server/ryzom_ams/www/html/installer/libsetup.php | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/ryzom/tools/server/ryzom_ams/ams_lib/translations/en.ini b/code/ryzom/tools/server/ryzom_ams/ams_lib/translations/en.ini index 865a842c4..b7c44044e 100644 --- a/code/ryzom/tools/server/ryzom_ams/ams_lib/translations/en.ini +++ b/code/ryzom/tools/server/ryzom_ams/ams_lib/translations/en.ini @@ -2,7 +2,7 @@ ; Comments start with ';', as in php.ini [install] -login_info = "Please enter your MySQL Username and Password to install the database." +login_info = "Please enter your MySQL Username and Password to install the database.
This is being loaded because config.php is missing.
This process will take about 30 seconds." login_here = "here" [dashboard] diff --git a/code/ryzom/tools/server/ryzom_ams/www/config.default.php b/code/ryzom/tools/server/ryzom_ams/www/config.default.php index cb6641609..a091ed635 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/config.default.php +++ b/code/ryzom/tools/server/ryzom_ams/www/config.default.php @@ -88,7 +88,7 @@ $AMS_CACHEDIR = $AMS_LIB . '/cache'; $SITEBASE = dirname( __FILE__ ) . '/html/' ; //the paths to your website url -$BASE_WEBPATH = $_SERVER['REQUEST_URI'].; +$BASE_WEBPATH = dirname($_SERVER['PHP_SELF']); $IMAGELOC_WEBPATH = $_SERVER['REQUEST_URI'].'/img'; $WEBPATH = $BASE_WEBPATH . '/index.php'; $INGAME_WEBPATH = $BASE_WEBPATH . '/index.php'; diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/index.php b/code/ryzom/tools/server/ryzom_ams/www/html/index.php index aec5d1825..50d8227be 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/html/index.php +++ b/code/ryzom/tools/server/ryzom_ams/www/html/index.php @@ -16,7 +16,7 @@ ini_set('display_errors', 'on'); require_once( '../../ams_lib/libinclude.php' ); if (!@include '../config.php') { //if config doesnt exist run setup - require( 'install/libsetup.php' ); + require( 'installer/libsetup.php' ); } else { //if config exists then include it require( '../config.php' ); diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php b/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php index f4a6a50b4..0f39633e1 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php +++ b/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php @@ -27,7 +27,7 @@ //var used to access the DB; global $cfg; - + sleep(15); try{ //SETUP THE WWW DB $dbw = new DBLayer("install", "web"); @@ -490,7 +490,7 @@ echo "failed to copy ../config.php ...\n"; } } - echo 'Reload! '; + echo '
Reload! '; exit; From 08ee2b8abcbf2843b3587556d4be0d11f91cc816 Mon Sep 17 00:00:00 2001 From: Botanic Date: Tue, 22 Oct 2013 22:03:33 -0700 Subject: [PATCH 10/10] added installing nel db --HG-- branch : rc-botanic-webdev --- .../ryzom_ams/www/html/installer/libsetup.php | 149 ++++++++++++++++-- 1 file changed, 133 insertions(+), 16 deletions(-) diff --git a/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php b/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php index 0f39633e1..9118afb76 100644 --- a/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php +++ b/code/ryzom/tools/server/ryzom_ams/www/html/installer/libsetup.php @@ -75,22 +75,22 @@ -- ----------------------------------------------------------------------------------------------------------------------- -- ----------------------------------------------------------------------------------------------------------------------- - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_log` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`tagged` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`tag` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_support_group` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_group` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_group` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_info` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`email` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`forwarded` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`assigned` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_reply` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_content` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`support_group` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_category` ; - DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_user` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_log` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`tagged` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`tag` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_support_group` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`in_group` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_group` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_info` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`email` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`forwarded` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`assigned` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_reply` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_content` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`support_group` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_category` ; + DROP TABLE IF EXISTS `" . $cfg['db']['lib']['name'] ."`.`ticket_user` ; -- ----------------------------------------------------- @@ -463,7 +463,123 @@ "; $dbl->executeWithoutParams($sql); print "The Lib & Web database were correctly installed!
"; + + //SETUP THE SHARD DB + $dbs = new DBLayer("install", "shard"); + $sql = " + CREATE DATABASE IF NOT EXISTS `" . $cfg['db']['shard']['name'] ."`; + USE `". $cfg['db']['shard']['name'] . "`; + + CREATE TABLE IF NOT EXISTS `domain` ( + `domain_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `domain_name` varchar(32) NOT NULL DEFAULT '', + `status` enum('ds_close','ds_dev','ds_restricted','ds_open') NOT NULL DEFAULT 'ds_dev', + `patch_version` int(10) unsigned NOT NULL DEFAULT '0', + `backup_patch_url` varchar(255) DEFAULT NULL, + `patch_urls` text, + `login_address` varchar(255) NOT NULL DEFAULT '', + `session_manager_address` varchar(255) NOT NULL DEFAULT '', + `ring_db_name` varchar(255) NOT NULL DEFAULT '', + `web_host` varchar(255) NOT NULL DEFAULT '', + `web_host_php` varchar(255) NOT NULL DEFAULT '', + `description` varchar(200) DEFAULT NULL, + PRIMARY KEY (`domain_id`), + UNIQUE KEY `name_idx` (`domain_name`) + ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ; + INSERT INTO `domain` (`domain_id`, `domain_name`, `status`, `patch_version`, `backup_patch_url`, `patch_urls`, `login_address`, `session_manager_address`, `ring_db_name`, `web_host`, `web_host_php`, `description`) VALUES + (12, 'ryzom_open', 'ds_open', 610, 'http://127.0.0.1:23001', NULL, '127.0.0.1:49998', '127.0.0.1:49999', 'ring_open', '127.0.0.1:30000', '127.0.0.1:40916', 'Open Domain'); + + CREATE TABLE IF NOT EXISTS `permission` ( + `UId` int(10) unsigned NOT NULL DEFAULT '0', + `ClientApplication` char(64) NOT NULL DEFAULT 'ryzom', + `ShardId` int(10) NOT NULL DEFAULT '-1', + `AccessPrivilege` set('OPEN','DEV','RESTRICTED') NOT NULL DEFAULT 'OPEN', + `prim` int(10) unsigned NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`prim`), + KEY `UIDIndex` (`UId`) + ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; + + CREATE TABLE IF NOT EXISTS `shard` ( + `ShardId` int(10) NOT NULL DEFAULT '0', + `domain_id` int(11) unsigned NOT NULL DEFAULT '0', + `WsAddr` varchar(64) DEFAULT NULL, + `NbPlayers` int(10) unsigned DEFAULT '0', + `Name` varchar(255) DEFAULT 'unknown shard', + `Online` tinyint(1) unsigned DEFAULT '0', + `ClientApplication` varchar(64) DEFAULT 'ryzom', + `Version` varchar(64) NOT NULL DEFAULT '', + `PatchURL` varchar(255) NOT NULL DEFAULT '', + `DynPatchURL` varchar(255) NOT NULL DEFAULT '', + `FixedSessionId` int(11) unsigned NOT NULL DEFAULT '0', + `State` enum('ds_close','ds_dev','ds_restricted','ds_open') NOT NULL DEFAULT 'ds_dev', + `MOTD` text NOT NULL, + `prim` int(10) unsigned NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`prim`) + ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='contains all shards informations for login system' AUTO_INCREMENT=31 ; + + INSERT INTO `shard` (`ShardId`, `domain_id`, `WsAddr`, `NbPlayers`, `Name`, `Online`, `ClientApplication`, `Version`, `PatchURL`, `DynPatchURL`, `FixedSessionId`, `State`, `MOTD`, `prim`) VALUES + (302, 12, '127.0.0.1', 0, 'Open Shard', 0, 'ryzom_open', '', '', '', 0, 'ds_dev', '', 30); + + CREATE TABLE IF NOT EXISTS `user` ( + `UId` int(10) NOT NULL AUTO_INCREMENT, + `Login` varchar(64) NOT NULL DEFAULT '', + `Password` varchar(13) DEFAULT NULL, + `ShardId` int(10) NOT NULL DEFAULT '-1', + `State` enum('Offline','Online') NOT NULL DEFAULT 'Offline', + `Privilege` varchar(255) NOT NULL DEFAULT '', + `GroupName` varchar(255) NOT NULL DEFAULT '', + `FirstName` varchar(255) NOT NULL DEFAULT '', + `LastName` varchar(255) NOT NULL DEFAULT '', + `Birthday` varchar(32) NOT NULL DEFAULT '', + `Gender` tinyint(1) unsigned NOT NULL DEFAULT '0', + `Country` char(2) NOT NULL DEFAULT '', + `Email` varchar(255) NOT NULL DEFAULT '', + `Address` varchar(255) NOT NULL DEFAULT '', + `City` varchar(100) NOT NULL DEFAULT '', + `PostalCode` varchar(10) NOT NULL DEFAULT '', + `USState` char(2) NOT NULL DEFAULT '', + `Chat` char(2) NOT NULL DEFAULT '0', + `BetaKeyId` int(10) unsigned NOT NULL DEFAULT '0', + `CachedCoupons` varchar(255) NOT NULL DEFAULT '', + `ProfileAccess` varchar(45) DEFAULT NULL, + `Level` int(2) NOT NULL DEFAULT '0', + `CurrentFunds` int(4) NOT NULL DEFAULT '0', + `IdBilling` varchar(255) NOT NULL DEFAULT '', + `Community` char(2) NOT NULL DEFAULT '--', + `Newsletter` tinyint(1) NOT NULL DEFAULT '1', + `Account` varchar(64) NOT NULL DEFAULT '', + `ChoiceSubLength` tinyint(2) NOT NULL DEFAULT '0', + `CurrentSubLength` varchar(255) NOT NULL DEFAULT '0', + `ValidIdBilling` int(4) NOT NULL DEFAULT '0', + `GMId` int(4) NOT NULL DEFAULT '0', + `ExtendedPrivilege` varchar(128) NOT NULL DEFAULT '', + `ToolsGroup` varchar(20) NOT NULL DEFAULT '', + `Unsubscribe` date NOT NULL DEFAULT '0000-00-00', + `SubDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `SubIp` varchar(20) NOT NULL DEFAULT '', + `SecurePassword` varchar(32) NOT NULL DEFAULT '', + `LastInvoiceEmailCheck` date NOT NULL DEFAULT '0000-00-00', + `FromSource` varchar(8) NOT NULL DEFAULT '', + `ValidMerchantCode` varchar(13) NOT NULL DEFAULT '', + `PBC` tinyint(1) NOT NULL DEFAULT '0', + `ApiKeySeed` varchar(8) DEFAULT NULL, + PRIMARY KEY (`UId`), + KEY `LoginIndex` (`Login`), + KEY `GroupIndex` (`GroupName`), + KEY `ToolsGroup` (`ToolsGroup`), + KEY `CurrentSubLength` (`CurrentSubLength`), + KEY `Community` (`Community`), + KEY `Email` (`Email`), + KEY `GMId` (`GMId`) + ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='contains all users informations for login system' AUTO_INCREMENT=1 ; + + GRANT ALL ON `" . $cfg['db']['shard']['name'] ."`.* TO `" . $cfg['db']['shard']['user'] ."`@localhost; + "; + $dbs->executeWithoutParams($sql); + print "The shard database was correctly installed!
"; + + //Now create an admin account! $hashpass = crypt("admin", Users::generateSALT()); $params = array( @@ -485,6 +601,7 @@ } + //copy config.default.php to config.php! if (!file_exists('../config.php')) { if (!copy('../config.default.php', '../config.php')) { echo "failed to copy ../config.php ...\n";