Encrypted messaging app
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

141 lines
2.6 KiB

  1. package Seeder
  2. import (
  3. "encoding/base64"
  4. "io"
  5. "os"
  6. "time"
  7. "git.tovijaeschke.xyz/tovi/Envelope/Backend/Database"
  8. )
  9. func seedFriend(userRequestTo, userRequestFrom Database.User, accepted bool) error {
  10. var (
  11. friendRequest Database.FriendRequest
  12. symKey AesKey
  13. encPublicKey []byte
  14. err error
  15. )
  16. symKey, err = GenerateAesKey()
  17. if err != nil {
  18. return err
  19. }
  20. encPublicKey, err = symKey.AesEncrypt([]byte(PublicKey))
  21. if err != nil {
  22. return err
  23. }
  24. friendRequest = Database.FriendRequest{
  25. UserID: userRequestTo.ID,
  26. FriendID: base64.StdEncoding.EncodeToString(
  27. EncryptWithPublicKey(
  28. []byte(userRequestFrom.ID.String()),
  29. decodedPublicKey,
  30. ),
  31. ),
  32. FriendUsername: base64.StdEncoding.EncodeToString(
  33. EncryptWithPublicKey(
  34. []byte(userRequestFrom.Username),
  35. decodedPublicKey,
  36. ),
  37. ),
  38. FriendPublicAsymmetricKey: base64.StdEncoding.EncodeToString(
  39. encPublicKey,
  40. ),
  41. SymmetricKey: base64.StdEncoding.EncodeToString(
  42. EncryptWithPublicKey(symKey.Key, decodedPublicKey),
  43. ),
  44. }
  45. if accepted {
  46. friendRequest.AcceptedAt.Time = time.Now()
  47. friendRequest.AcceptedAt.Valid = true
  48. }
  49. return (&friendRequest).CreateFriendRequest()
  50. }
  51. func copyProfileImage() error {
  52. var (
  53. srcFile *os.File
  54. dstFile *os.File
  55. err error
  56. )
  57. srcFile, err = os.Open("./Database/Seeder/profile_image_enc.dat")
  58. if err != nil {
  59. return err
  60. }
  61. dstFile, err = os.Create("./attachments/profile_image")
  62. if err != nil {
  63. return err
  64. }
  65. defer dstFile.Close()
  66. _, err = io.Copy(dstFile, srcFile)
  67. return err
  68. }
  69. // SeedFriends creates dummy friends for testing/development
  70. func SeedFriends() {
  71. var (
  72. primaryUser Database.User
  73. secondaryUser Database.User
  74. accepted bool
  75. i int
  76. err error
  77. )
  78. // err = copyProfileImage()
  79. // if err != nil {
  80. // panic(err)
  81. // }
  82. primaryUser, err = Database.GetUserByUsername("testUser")
  83. if err != nil {
  84. panic(err)
  85. }
  86. secondaryUser, err = Database.GetUserByUsername("ATestUser2")
  87. if err != nil {
  88. panic(err)
  89. }
  90. err = seedFriend(primaryUser, secondaryUser, true)
  91. if err != nil {
  92. panic(err)
  93. }
  94. err = seedFriend(secondaryUser, primaryUser, true)
  95. if err != nil {
  96. panic(err)
  97. }
  98. accepted = false
  99. for i = 0; i <= 5; i++ {
  100. secondaryUser, err = Database.GetUserByUsername(userNames[i])
  101. if err != nil {
  102. panic(err)
  103. }
  104. if i > 3 {
  105. accepted = true
  106. }
  107. err = seedFriend(primaryUser, secondaryUser, accepted)
  108. if err != nil {
  109. panic(err)
  110. }
  111. if accepted {
  112. err = seedFriend(secondaryUser, primaryUser, accepted)
  113. if err != nil {
  114. panic(err)
  115. }
  116. }
  117. }
  118. }