public override int GetHashCode() { unchecked { var hashCode = ByteField.GetHashCode(); hashCode = (hashCode * 397) ^ SByteField.GetHashCode(); hashCode = (hashCode * 397) ^ Int16Field.GetHashCode(); hashCode = (hashCode * 397) ^ UInt16Field.GetHashCode(); hashCode = (hashCode * 397) ^ Int32Field; hashCode = (hashCode * 397) ^ (int)UInt32Field; hashCode = (hashCode * 397) ^ Int64Field.GetHashCode(); hashCode = (hashCode * 397) ^ UInt64Field.GetHashCode(); hashCode = (hashCode * 397) ^ DecimalField.GetHashCode(); hashCode = (hashCode * 397) ^ SingleFiled.GetHashCode(); hashCode = (hashCode * 397) ^ DoubleField.GetHashCode(); hashCode = (hashCode * 397) ^ (StringField != null ? StringField.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (int)MyEnumField; hashCode = (hashCode * 397) ^ BooleanField.GetHashCode(); hashCode = (hashCode * 397) ^ DateTimeField.GetHashCode(); hashCode = (hashCode * 397) ^ DateTimeOffsetField.GetHashCode(); hashCode = (hashCode * 397) ^ GuidField.GetHashCode(); hashCode = (hashCode * 397) ^ TimeSpanField.GetHashCode(); hashCode = (hashCode * 397) ^ (UrlField != null ? UrlField.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (NullField != null ? NullField.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (IntArrayField != null ? IntArrayField.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (StringArrayField != null ? StringArrayField.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (EmptyArrayField != null ? EmptyArrayField.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (NullArrayField != null ? NullArrayField.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (DictionaryArrayField != null ? DictionaryArrayField.GetHashCode() : 0); hashCode = (hashCode * 397) ^ (ObjectArrayField != null ? ObjectArrayField.GetHashCode() : 0); return(hashCode); } }
public RowFields() : base(R.TableName, "") { ID = new Int32Field(this, "ID", "ID", 0, FieldFlags.NotNull, r => ((R)r)._id, (r, v) => ((R)r)._id = v); GroupID = new Int32Field(this, "GroupID", "Değer No", 0, FieldFlags.Identity, r => ((R)r)._groupId, (r, v) => ((R)r)._groupId = v); DisplayOrder = new Int32Field(this, "DisplayOrder", "Gösterim Sırası", 0, FieldFlags.Required, r => ((R)r)._displayOrder, (r, v) => ((R)r)._displayOrder = v); IsActive = new Int16Field(this, "IsActive", "Aktif", 0, FieldFlags.Required, r => ((R)r)._isActive, (r, v) => ((R)r)._isActive = v); }
public RowFields() : base(R.TableName, "") { ID = new Int32Field(this, "ID", "ID", 0, FieldFlags.Identity, r => ((R)r)._id, (r, v) => ((R)r)._id = v); GroupID = new Int32Field(this, "GroupID", "Değer No", 0, FieldFlags.Required, r => ((R)r)._groupId, (r, v) => ((R)r)._groupId = v); DisplayOrder = new Int32Field(this, "DisplayOrder", "Gösterim Sırası", 0, FieldFlags.Required, r => ((R)r)._displayOrder, (r, v) => ((R)r)._displayOrder = v); IsActive = new Int16Field(this, "IsActive", "Aktif", 0, FieldFlags.Required, r => ((R)r)._isActive, (r, v) => ((R)r)._isActive = v); }
public override int GetHashCode() { int hash = 13; hash = (hash * 7) + Id.GetHashCode(); hash = (hash * 7) + Title.GetHashCode(); hash = (hash * 7) + Created.GetHashCode(); hash = (hash * 7) + Child.ChildCreated.GetHashCode(); hash = (hash * 7) + Child.ChildTitle.GetHashCode(); hash = (hash * 7) + Int16Field.GetHashCode(); hash = (hash * 7) + UInt16Field.GetHashCode(); hash = (hash * 7) + UInt32Field.GetHashCode(); hash = (hash * 7) + UInt64Field.GetHashCode(); return(hash); }
public void OnMessageReceived(WaveServerComponent dest, Enum msgID, WaveMessage data) { if (msgID is UserManagerMessageID) { if (data != null) { switch ((UserManagerMessageID)msgID) { case UserManagerMessageID.Challenge: { bool createAccount = false; // check if there is login already (otherwise set defaults) if (!Core.Application.HasLogin) { createAccount = true; Core.Application.UpdateCredentials(GenerateNewUsername(), StringHelper.GetBytes(DefaultPassword)); } // get CSL version WaveCSLVersion serverCSL = (WaveCSLVersion)(data[UserManagerFieldID.CSLVersion].AsShort() ?? (short)WaveCSLVersion.Unknown); switch (serverCSL) { case WaveCSLVersion.Version5: case WaveCSLVersion.Version4: Core.CSLVersion = serverCSL; break; default: Core.CSLVersion = WaveCSLVersion.Version3; break; } // get maximum protocol version WaveProtocolVersion serverProto = (WaveProtocolVersion)(data[UserManagerFieldID.MaxWeMessageVersion].AsByte() ?? (byte)WaveProtocolVersion.Unknown); switch (serverProto) { case WaveProtocolVersion.Version4: Core.ProtocolVersion = WaveProtocolVersion.Version4; break; default: Core.ProtocolVersion = WaveProtocolVersion.Version3; break; } // get challenge BinaryField challenge = (BinaryField)data[UserManagerFieldID.Challenge]; // assemble login message WaveMessage msgOut = new WaveMessage(); msgOut.AddInt16(UserManagerFieldID.CSLVersion, (short)Core.CSLVersion); msgOut.AddBoolean(UserManagerFieldID.EncryptSession, Core.UseEncryption); msgOut.AddInt16(UserManagerFieldID.PriorityMask, NetworkAgent.PrioritiesActiveMask); msgOut.AddBinary(UserManagerFieldID.UserCredentials, ProcessChallenge(challenge.Data, Core.Application, createAccount)); msgOut.AddBoolean(UserManagerFieldID.CreateAccount, createAccount); // cache hash byte[] cacheHash = Core.Cache.CacheHash; msgOut.AddBinary(CacheAgentFieldID.CacheHashCompressed, (cacheHash.Length > 0) ? CompressionHelper.GZipBuffer(cacheHash) : cacheHash); // cache ID (if any) if (Core.Cache.CacheID.HasValue) { msgOut.AddBinary(MessageOutFieldID.CacheItemID, Core.Cache.CacheID.Value.ToByteArray()); } // compiling device settings FieldList deviceSettingsList = FieldList.CreateField(UserManagerFieldID.DeviceSettings); deviceSettingsList.AddString(UserManagerFieldID.DeviceBuildID, Core.BuildID); deviceSettingsList.AddBoolean(NaviAgentFieldID.DeviceSupportsTouch, true); deviceSettingsList.AddInt16(NaviAgentFieldID.DeviceScreenResolutionWidth, 480); deviceSettingsList.AddInt16(NaviAgentFieldID.DeviceScreenResolutionHeight, 800); DeviceGroup[] devs = Core.System.SupportedDeviceGroups; foreach (DeviceGroup dev in devs) { deviceSettingsList.AddInt16(NaviAgentFieldID.DeviceProfileGroup, (short)dev); } deviceSettingsList.AddString(UserManagerFieldID.LanguageID, CultureInfo.CurrentCulture.Name); deviceSettingsList.AddString(UserManagerFieldID.Timezone, Core.Settings.TimeZone); deviceSettingsList.AddBoolean(UserManagerFieldID.AlphaSupport, true); deviceSettingsList.AddBoolean(UserManagerFieldID.CompressionSupport, true); msgOut.AddFieldList(deviceSettingsList); // compiling application request list FieldList appRequestList = FieldList.CreateField(UserManagerFieldID.ApplicationRequest); appRequestList.AddString(NaviAgentFieldID.ApplicationURN, Core.Application.URI); appRequestList.AddInt16(NaviAgentFieldID.ApplicationRequestAction, (short)AppRequestAction.GetAppEntryPage); msgOut.AddFieldList(appRequestList); msgOut.Send(WaveServerComponent.UserManager, UserManagerMessageID.Login); Core.UI.SignalViewNavigationStart(Core.UI.RootViewID); break; } case UserManagerMessageID.EncryptionKeys: { // setting encryption (if allowed by build configuration) if (Core.UseEncryption && (sessionHandshakeFish != null)) { BinaryField sessionKeyField = (BinaryField)data[UserManagerFieldID.SessionKey]; byte[] sessionKey = (byte[])sessionKeyField.Data; sessionHandshakeFish.Decrypt(sessionKey, sessionKey.Length); BinaryField globalServerKeyField = (BinaryField)data[UserManagerFieldID.GlobalServerKey]; byte[] globalServerKey = (byte[])globalServerKeyField.Data; sessionHandshakeFish.Decrypt(globalServerKey, globalServerKey.Length); Core.NotifyEncryptionKeysChanged(this, sessionKey, globalServerKey); } else { Core.NotifyEncryptionKeysChanged(this, null, null); } // setting login data StringField userName = (StringField)data[UserManagerFieldID.CreatedAccountUserName]; if (userName != null) { BinaryField userPass = (BinaryField)data[UserManagerFieldID.CreatedAccountPasswordHash]; if ((userPass != null) && (sessionHandshakeFish != null)) { byte[] passBuffer = (byte[])userPass.Data.Clone(); sessionHandshakeFish.Decrypt(passBuffer, passBuffer.Length); Core.Application.UpdateCredentials(userName.Data, passBuffer); // no longer needed sessionHandshakeFish = null; } } break; } case UserManagerMessageID.LoginResponse: { if (!authenticated) { Int16Field loginStatus = (Int16Field)data[UserManagerFieldID.LoginStatus]; switch ((UserLoginStatus)loginStatus.Data) { case UserLoginStatus.Success: { // signal authentication success Core.NotifyAuthentication(this, data[UserManagerFieldID.SessionInfo].AsByteArray()); // preparing login data message FieldList appContext = (FieldList)data[UserManagerFieldID.ApplicationContext]; if (appContext != null) { int appID = appContext[MessageOutFieldID.ApplicationID].AsInteger() ?? 0; string unqualifiedAppURI = appContext[UserManagerFieldID.ApplicationUnqualifiedURI].AsText(); string fullyQualifiedAppURI = appContext[UserManagerFieldID.ApplicationFullyQualifiedURI].AsText(); Core.NotifySuccessfulLogin(this, appID, unqualifiedAppURI, fullyQualifiedAppURI); } authenticated = true; authenticatedEver = true; break; } case UserLoginStatus.FailedInvalidCredentials: Core.NotifyTerminateSession(this, SessionTerminationReasonCode.InvalidCredentials); break; case UserLoginStatus.FailedNoUser: Core.NotifyTerminateSession(this, SessionTerminationReasonCode.NoSuchUser); break; } } break; } } } } }