This commit is contained in:
2024-12-26 21:20:15 +06:00
9 changed files with 440 additions and 224 deletions

View File

@ -14,8 +14,8 @@ spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.max-lifetime=1700000 spring.datasource.hikari.max-lifetime=1700000
spring.datasource.hikari.idle-timeout=600000 spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.connection-timeout=30000 spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT now() spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=60000 spring.datasource.hikari.validation-timeout=5000
private.key=MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQD1GHVopvcvpJyU/ha7+R9IDC6EoZyZKZ14XBGu95ikEUSPkIoxE8n6TbF8Srj95OxrowHhOejtMrUhF+NBJNR59evR9ZT1JO2yo/QvvfA834wiDpNzCDFQbGO5emuN9KoinZIpFSyMtjGNlaj7zf01wYIglSqr3kzpTYlF3zlVlW/6oGECA3swKnz9eiNEMg7WEHCIZx+HureHySSJi4MZLizH4EzAW8geUB7Vi5rJLfg5fPcXkJfOcP6PoSnfHqXkSw2DFEoM+hz3vrS/rj05YlkmTTKarnr+GOAc4IhE36zbSx93BaZ4d59Hsk5CuS4qk/sI9dn7IQYJKuypKJiFAgMBAAECggEBAI2AwoBaLUofYpuOmveJm+rPxaejWrL+2MBdf4QhxMmsgoXUcERnZWwSoQ7eYTGMkoaORQ6QjY8sgHCLxxOcPOPw/GZqv8ZMvMMvb1KE+YdblR8whSabq0UAXw79w8zgXb3AdVsss1zF75QLvNUsFy2K/CLtnAZAQO1Na5yghQyIKjKd8YXSP8Ylk15Nz942jbo71h980Uk3mr8tV/PqJ1x7cs1Z5femhQHNFDsuJMRh6TpPDSqEir3ziZs9jVQMR4pAMm5bCvfcsnOPaltomRymUKOTdvHBVv1LCTWNipQgqNPMitmcWtJnC48j62M5ADtnF1p30VezMQnylLS+3kECgYEA+rXZQdbndKHaROTE1bDAmthxgrOBW5wrzZ7B9Z0zDnrsuOa8bk8Dc0WNGd8/mzKz1t4fAfA7W9c/748erhwUFhBlzpv8COOcEJwWSL4dV0mCLBqMuhmb4yJRYwv2kVEdFvbWPjKRhr7WcnIV7rrbc/jr3kdr/aKSXzxt7J0BaDUCgYEA+kRIb8/0XC6YJL84v8NlkpgaGx7BDGqIsjVYrWAfTWtS01HxT+39QG6T5tT6rgkIN1FBxkvSvvuz2/mwSpAvVktCuZyIHoAutJUuowwwT9yYy0zaLyrhX44zoXZiHmZAHObxo1oYogtH64yhiC3X+uLtScW0g5Z7SFxjDOTFmRECgYEAxVNnwjhhSB0z7FGa0w4hKj79aH/carxKhbZUtvqZeuYpd4az/KZX8txlKF3cdEy923pMMXxhW/HZMrYU0bjr3kndt3ZyMpTi+ve/WlW4RkFnIUtsQ/VwCp+yKyD5WnrbSH3TNnUasVF2+/DrblDH9UmQbA0O5DyWtDqd0kPpHZkCgYEAs95rqWDuoWojkxWUNc67q9aBvMgnu0K+KEbLCyCwnrXp+1NDekzz3WEcD6U23epD624NNfW86+J/bDRSjeR/AShqNnjYJAPAja1CrZDPEDbd4g/EKG5LOKA9X2h0MKEQpzUcqmjQl3ZAJH0Yg4VfW0PJg2IC0ShQRruPvO6XTeECgYA54eQya6sEIpE7aIKXwitRMV3VE8jMP5cQHTLK841pFPKiC2iMQDrgJqjYuMJUdhx2WRhoHQwy76XvLMWzLmD+k2U4DwzSq3APc6r+m4EesUdhsmt8/DFyR29OT0r7OuVVppQbQ+SPHrtNxVrAVuwhpnfW8rTdZRdbPHAnwgs/lg== private.key=MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQD1GHVopvcvpJyU/ha7+R9IDC6EoZyZKZ14XBGu95ikEUSPkIoxE8n6TbF8Srj95OxrowHhOejtMrUhF+NBJNR59evR9ZT1JO2yo/QvvfA834wiDpNzCDFQbGO5emuN9KoinZIpFSyMtjGNlaj7zf01wYIglSqr3kzpTYlF3zlVlW/6oGECA3swKnz9eiNEMg7WEHCIZx+HureHySSJi4MZLizH4EzAW8geUB7Vi5rJLfg5fPcXkJfOcP6PoSnfHqXkSw2DFEoM+hz3vrS/rj05YlkmTTKarnr+GOAc4IhE36zbSx93BaZ4d59Hsk5CuS4qk/sI9dn7IQYJKuypKJiFAgMBAAECggEBAI2AwoBaLUofYpuOmveJm+rPxaejWrL+2MBdf4QhxMmsgoXUcERnZWwSoQ7eYTGMkoaORQ6QjY8sgHCLxxOcPOPw/GZqv8ZMvMMvb1KE+YdblR8whSabq0UAXw79w8zgXb3AdVsss1zF75QLvNUsFy2K/CLtnAZAQO1Na5yghQyIKjKd8YXSP8Ylk15Nz942jbo71h980Uk3mr8tV/PqJ1x7cs1Z5femhQHNFDsuJMRh6TpPDSqEir3ziZs9jVQMR4pAMm5bCvfcsnOPaltomRymUKOTdvHBVv1LCTWNipQgqNPMitmcWtJnC48j62M5ADtnF1p30VezMQnylLS+3kECgYEA+rXZQdbndKHaROTE1bDAmthxgrOBW5wrzZ7B9Z0zDnrsuOa8bk8Dc0WNGd8/mzKz1t4fAfA7W9c/748erhwUFhBlzpv8COOcEJwWSL4dV0mCLBqMuhmb4yJRYwv2kVEdFvbWPjKRhr7WcnIV7rrbc/jr3kdr/aKSXzxt7J0BaDUCgYEA+kRIb8/0XC6YJL84v8NlkpgaGx7BDGqIsjVYrWAfTWtS01HxT+39QG6T5tT6rgkIN1FBxkvSvvuz2/mwSpAvVktCuZyIHoAutJUuowwwT9yYy0zaLyrhX44zoXZiHmZAHObxo1oYogtH64yhiC3X+uLtScW0g5Z7SFxjDOTFmRECgYEAxVNnwjhhSB0z7FGa0w4hKj79aH/carxKhbZUtvqZeuYpd4az/KZX8txlKF3cdEy923pMMXxhW/HZMrYU0bjr3kndt3ZyMpTi+ve/WlW4RkFnIUtsQ/VwCp+yKyD5WnrbSH3TNnUasVF2+/DrblDH9UmQbA0O5DyWtDqd0kPpHZkCgYEAs95rqWDuoWojkxWUNc67q9aBvMgnu0K+KEbLCyCwnrXp+1NDekzz3WEcD6U23epD624NNfW86+J/bDRSjeR/AShqNnjYJAPAja1CrZDPEDbd4g/EKG5LOKA9X2h0MKEQpzUcqmjQl3ZAJH0Yg4VfW0PJg2IC0ShQRruPvO6XTeECgYA54eQya6sEIpE7aIKXwitRMV3VE8jMP5cQHTLK841pFPKiC2iMQDrgJqjYuMJUdhx2WRhoHQwy76XvLMWzLmD+k2U4DwzSq3APc6r+m4EesUdhsmt8/DFyR29OT0r7OuVVppQbQ+SPHrtNxVrAVuwhpnfW8rTdZRdbPHAnwgs/lg==
public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9Rh1aKb3L6SclP4Wu/kfSAwuhKGcmSmdeFwRrveYpBFEj5CKMRPJ+k2xfEq4/eTsa6MB4Tno7TK1IRfjQSTUefXr0fWU9STtsqP0L73wPN+MIg6TcwgxUGxjuXprjfSqIp2SKRUsjLYxjZWo+839NcGCIJUqq95M6U2JRd85VZVv+qBhAgN7MCp8/XojRDIO1hBwiGcfh7q3h8kkiYuDGS4sx+BMwFvIHlAe1YuayS34OXz3F5CXznD+j6Ep3x6l5EsNgxRKDPoc9760v649OWJZJk0ymq56/hjgHOCIRN+s20sfdwWmeHefR7JOQrkuKpP7CPXZ+yEGCSrsqSiYhQIDAQAB public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9Rh1aKb3L6SclP4Wu/kfSAwuhKGcmSmdeFwRrveYpBFEj5CKMRPJ+k2xfEq4/eTsa6MB4Tno7TK1IRfjQSTUefXr0fWU9STtsqP0L73wPN+MIg6TcwgxUGxjuXprjfSqIp2SKRUsjLYxjZWo+839NcGCIJUqq95M6U2JRd85VZVv+qBhAgN7MCp8/XojRDIO1hBwiGcfh7q3h8kkiYuDGS4sx+BMwFvIHlAe1YuayS34OXz3F5CXznD+j6Ep3x6l5EsNgxRKDPoc9760v649OWJZJk0ymq56/hjgHOCIRN+s20sfdwWmeHefR7JOQrkuKpP7CPXZ+yEGCSrsqSiYhQIDAQAB

View File

@ -3,7 +3,8 @@ server.port=8082
issuer.name=istransit issuer.name=istransit
logging.level.com.zaxxer.hikari=DEBUG #logging.level.com.zaxxer.hikari=DEBUG
#logging.level.org.springframework=warn
spring.datasource.url=jdbc:postgresql://10.101.1.6:5432/transit_2024_09_03?ApplicationName=kz_istransit_jwt spring.datasource.url=jdbc:postgresql://10.101.1.6:5432/transit_2024_09_03?ApplicationName=kz_istransit_jwt
spring.datasource.username=postgres spring.datasource.username=postgres
@ -12,19 +13,18 @@ spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.hikari.maximum-pool-size=10 spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=5 spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.max-lifetime=1700000 spring.datasource.hikari.max-lifetime=600000
spring.datasource.hikari.idle-timeout=600000 spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.connection-timeout=30000 spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT now() spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=60000 spring.datasource.hikari.validation-timeout=5000
spring.datasource.hikari.validation-interval=60000
private.key=MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCsrV60WgOCbFDz7mrr5Ade4wSrKjgB4PX+Y2zzttc87FKILzZswpQv2XLRZXEbkgpAViV99BsKDSd0f46FTynTH3SqbAJ4KfhsVPqfMD2yNjJBJSRyLZ19QAFdyyveRI/b4oQ+dOl0ZhlAUQ5Hfg5G34cE/AyfoVaHRol2ZOpkf5XL90/dPKxPsAaWw+LwgD2PdqzINl1L17EspVUjNiRsclQqkodhzhP/brRhq5S03KKNtPnDhlZJsep67NX8cZQJgil8BnIzGHMqdFF+NBZoLPy/+r4U/Vr6O1oPZ7RK3ontY6fJPHY/bI17KxwQusk8C3tPJNwg2U3mhkJ3mF93AgMBAAECggEAE9nCX11RtfaZv9ESvZdzOXdDnCG4Wo7v+JSZe9LzH2/TdRBoY0xjGLUYu/W7cP3y6757hOVBDoDAnmXjjnOxTTH6iXTtO78nbdy/CvnSvd/5GwAYFoAj8Lgg8BVhL6YWG6MIrN1n0RfDo18uEw3suj0MGoiXMuqrNdXoC5JCV9cajVSDhABw761sNrwBgYCOxk28KrfTRLh6QsQGSf8stLDDwgfImWXJTLzKacFAemNRFuBqp+pQdVuBtorN9rYoGyiswVBTWIA06uUYZqK1uIRLh7wHf2cFARm5rREDwYmG8EHe8JXYeOU2JUF/Rd0V4EQVZHFB4VLwYYumwq2XUQKBgQDcyrmpaA7xjt7ilIV50CtzrY8hAJST2bbdnl/aMm7JI/ZjNFVXbTDHxUen0IvyHmpPS1Z3K8XJ2IR07L7vO3E96OJcYsU2dJ9/HZ5Vg+Q+f3TrscbNRc6Dn6knG9Vr/D/x3pJoyRR7VoWQXs6y87Df5eVtdjmzTTKtY/tmMhEyrQKBgQDINnvwg9vxhhaqflQmNCxGoAkImrYsyGBVlhOy3qbqnMVSQGW8ub/MChpNPrOBTNq6Nb7kK4dzYGSa7lK3vjX+9bc/8vUY69DpV9yZpp370UXTnrKkPUIgrVHiQfjfOXDXeHcpCNQD7E+cDM+DtPtgjtPV966HipFMSvOBmohDMwKBgQDY3Ro9ZeL/qpgLr1vnCOwVBA1ImhxVmIt/5FY7qDuevv778+Q7Khm2rnQyRamfl/ZNii8UgF8WYd/AROVJb3ZMG9lyauVQFn6uyXXCgviF1oUOGCCvcPhl2kW4DyOynCJmvHnMCG1gs9wesLCPnsJFOLb/rBcCoTm8iy7b8yNnRQKBgCeDSTaQb2ndMr/3KphXl51gnCfMkMOJ0ClT8xNMCdknk3HGL83tQsL8A3DXPQn5pvk0/jV9ub+1eGVzP3Pv4CwvRjkis+h1Mce7hVf1oBxAku1O1qa/SDu2uQBUUM+NQI3lwm6gxWb4zkVX6eRuZWYLCheiSBmL6V0LNb+QRfAtAoGBAJ4tM34ovk0Ag/fRjxgEYqo7FcMplBs3nymGV/zS9QQA4gorGq5mBiQX0n8wR68UpKz7u1NXNXc7hJGvP0uHK+/GCQd9i1Csow641TIdMv+4XhQl2/ZO0NuJb/NVB6qJ93WlnhWJP3s1a1zVlRyF3+Zn0D8nbBp+tkCbET0+XGuB private.key=MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCsrV60WgOCbFDz7mrr5Ade4wSrKjgB4PX+Y2zzttc87FKILzZswpQv2XLRZXEbkgpAViV99BsKDSd0f46FTynTH3SqbAJ4KfhsVPqfMD2yNjJBJSRyLZ19QAFdyyveRI/b4oQ+dOl0ZhlAUQ5Hfg5G34cE/AyfoVaHRol2ZOpkf5XL90/dPKxPsAaWw+LwgD2PdqzINl1L17EspVUjNiRsclQqkodhzhP/brRhq5S03KKNtPnDhlZJsep67NX8cZQJgil8BnIzGHMqdFF+NBZoLPy/+r4U/Vr6O1oPZ7RK3ontY6fJPHY/bI17KxwQusk8C3tPJNwg2U3mhkJ3mF93AgMBAAECggEAE9nCX11RtfaZv9ESvZdzOXdDnCG4Wo7v+JSZe9LzH2/TdRBoY0xjGLUYu/W7cP3y6757hOVBDoDAnmXjjnOxTTH6iXTtO78nbdy/CvnSvd/5GwAYFoAj8Lgg8BVhL6YWG6MIrN1n0RfDo18uEw3suj0MGoiXMuqrNdXoC5JCV9cajVSDhABw761sNrwBgYCOxk28KrfTRLh6QsQGSf8stLDDwgfImWXJTLzKacFAemNRFuBqp+pQdVuBtorN9rYoGyiswVBTWIA06uUYZqK1uIRLh7wHf2cFARm5rREDwYmG8EHe8JXYeOU2JUF/Rd0V4EQVZHFB4VLwYYumwq2XUQKBgQDcyrmpaA7xjt7ilIV50CtzrY8hAJST2bbdnl/aMm7JI/ZjNFVXbTDHxUen0IvyHmpPS1Z3K8XJ2IR07L7vO3E96OJcYsU2dJ9/HZ5Vg+Q+f3TrscbNRc6Dn6knG9Vr/D/x3pJoyRR7VoWQXs6y87Df5eVtdjmzTTKtY/tmMhEyrQKBgQDINnvwg9vxhhaqflQmNCxGoAkImrYsyGBVlhOy3qbqnMVSQGW8ub/MChpNPrOBTNq6Nb7kK4dzYGSa7lK3vjX+9bc/8vUY69DpV9yZpp370UXTnrKkPUIgrVHiQfjfOXDXeHcpCNQD7E+cDM+DtPtgjtPV966HipFMSvOBmohDMwKBgQDY3Ro9ZeL/qpgLr1vnCOwVBA1ImhxVmIt/5FY7qDuevv778+Q7Khm2rnQyRamfl/ZNii8UgF8WYd/AROVJb3ZMG9lyauVQFn6uyXXCgviF1oUOGCCvcPhl2kW4DyOynCJmvHnMCG1gs9wesLCPnsJFOLb/rBcCoTm8iy7b8yNnRQKBgCeDSTaQb2ndMr/3KphXl51gnCfMkMOJ0ClT8xNMCdknk3HGL83tQsL8A3DXPQn5pvk0/jV9ub+1eGVzP3Pv4CwvRjkis+h1Mce7hVf1oBxAku1O1qa/SDu2uQBUUM+NQI3lwm6gxWb4zkVX6eRuZWYLCheiSBmL6V0LNb+QRfAtAoGBAJ4tM34ovk0Ag/fRjxgEYqo7FcMplBs3nymGV/zS9QQA4gorGq5mBiQX0n8wR68UpKz7u1NXNXc7hJGvP0uHK+/GCQd9i1Csow641TIdMv+4XhQl2/ZO0NuJb/NVB6qJ93WlnhWJP3s1a1zVlRyF3+Zn0D8nbBp+tkCbET0+XGuB
public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArK1etFoDgmxQ8+5q6+QHXuMEqyo4AeD1/mNs87bXPOxSiC82bMKUL9ly0WVxG5IKQFYlffQbCg0ndH+OhU8p0x90qmwCeCn4bFT6nzA9sjYyQSUkci2dfUABXcsr3kSP2+KEPnTpdGYZQFEOR34ORt+HBPwMn6FWh0aJdmTqZH+Vy/dP3TysT7AGlsPi8IA9j3asyDZdS9exLKVVIzYkbHJUKpKHYc4T/260YauUtNyijbT5w4ZWSbHqeuzV/HGUCYIpfAZyMxhzKnRRfjQWaCz8v/q+FP1a+jtaD2e0St6J7WOnyTx2P2yNeyscELrJPAt7TyTcINlN5oZCd5hfdwIDAQAB public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArK1etFoDgmxQ8+5q6+QHXuMEqyo4AeD1/mNs87bXPOxSiC82bMKUL9ly0WVxG5IKQFYlffQbCg0ndH+OhU8p0x90qmwCeCn4bFT6nzA9sjYyQSUkci2dfUABXcsr3kSP2+KEPnTpdGYZQFEOR34ORt+HBPwMn6FWh0aJdmTqZH+Vy/dP3TysT7AGlsPi8IA9j3asyDZdS9exLKVVIzYkbHJUKpKHYc4T/260YauUtNyijbT5w4ZWSbHqeuzV/HGUCYIpfAZyMxhzKnRRfjQWaCz8v/q+FP1a+jtaD2e0St6J7WOnyTx2P2yNeyscELrJPAt7TyTcINlN5oZCd5hfdwIDAQAB
access.time=600 access.time=600
refresh.time=43200 refresh.time=43200
captcha.key=PPExpv36jk4Vzda3NpYnXLfuHCLYXqaNrxlOH/Jr/1M= captcha.key=PPExpv36jk4Vzda3NpYnXLfuHCLYXqaNrxlOH/Jr/1M=
captcha.time=600 captcha.time=600

View File

@ -2,7 +2,7 @@ spring.application.name=org_ccalm_jwt
server.port=8082 server.port=8082
issuer.name=ccalm issuer.name=ccalm
logging.level.com.zaxxer.hikari=DEBUG #logging.level.com.zaxxer.hikari=DEBUG
spring.datasource.url=jdbc:postgresql://91.201.214.156:5432/CCALM?ApplicationName=org_ccalm_jwt spring.datasource.url=jdbc:postgresql://91.201.214.156:5432/CCALM?ApplicationName=org_ccalm_jwt
spring.datasource.username=postgres spring.datasource.username=postgres
@ -14,9 +14,10 @@ spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.max-lifetime=1700000 spring.datasource.hikari.max-lifetime=1700000
spring.datasource.hikari.idle-timeout=600000 spring.datasource.hikari.idle-timeout=600000
spring.datasource.hikari.connection-timeout=30000 spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.connection-test-query=SELECT now() spring.datasource.hikari.connection-test-query=SELECT 1
spring.datasource.hikari.validation-timeout=60000 spring.datasource.hikari.validation-timeout=5000
personal_data.key=8YxGFFOd
private.key=MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDNgtaCfu5QlhWfU8bJAooLoX+bo/ARsvoWUJf5NodkGOivze5Lqtu5eq6ptT+gVKK+IEsjpmDsFPMCE2CW7xLZfgbtrWmTPd+fiRb2Z/fMudedo166H5WEgS3+TDWKt7WkLA/3kqvIqdBotuL4BENwZj6CIjGNdG01RNsCaDA/vxTkzx9njz6kfgAda/+wbdOJNwjNRgIb9AyedQT5OKvqRXequzrrOKD9wrm1O4nv8lA6WFg5YEMSW7T6WRIeArZsQr1aHv6qkiu47YreApfdFIWHxd9QinA9WrLPYdWXONr7+xyvqS4MHSJh9ZmCvMsc/HcF3RHJgEwgiC8E6hiZAgMBAAECggEAByZOICwaTmNqTSi0+blE5DKyJdAGQhdf6/bR0rG69BiJv9QCPk+rZUCHYxATLpjDMKoe8xaOuKfh7GiQK7AVj8t6ojouOhkk9n/mdJwZWt38Slesq/z9TqbP2tD769+ISjXeOFa58zk1Lu9t5gL/9aEY+54E607pnbjPhb3qL819/7absLbY1y3GKw2Cwd7RfP8nOWj0ViwnalFjfg6YZS1BL5c9NSg41FzZolwPruZ/bBGbc3nMW2khpuK7CtRk1pRJHUNYuVCsaBU4M4sf3tlZQPOdB6eYmQ3xmPtdnHYB13s588KialXKFlAuO4zG0CFa8DfIKsWDv6xTC1cMgQKBgQD6CjJuu715oKob7ohDTfrSppk4PY/kxWhUkKyKVW1Y1jXQOcd4BwVSyH6s7N8pCSWMwWmoF/t/l2kIcAWNZnsbzAQ8TYOhp1THstXMVb6c7JOL3SQC5RjbgW1RWCalh7/4QVE0xYeEL3qv5I2t9215zKR87Z6LIdJkxxAsHgMSbQKBgQDSaOp0kJZPkQH/75ltaI9exczyoaf+5U/OrnqT2lpRwa+5wqUTPWpTFTCDcJdu8OKCgrKPOQ6NACuX4PbIW/jR+70w7nbC46Tx3JdDYxBlm+6MuHUs5RXufFDJyGoN8lJzoPGax3uxY1kxWwSaSIB0sVXV/P3PIE31I5DbarWjXQKBgQCrRyLm4anYUCtWuN4UpK0lcUPR17Hi9ysRioz2sbAWw53XRk0SNlT6MSc9E4GGnaJgOflDUTJRY4lqYzoac1HvZ6CbIkoCCRq1NRbpQu8wlYo4q8JITWDqtE0LBMRsbYId77hN2uWKse9r37cBrVULsxgWD7uj+QYjTI0Se3iFPQJ/SSYwXFXn68F98Hxb2q1/KnOZzMBmpzcRh8kg1EYVIFc1wF7rBMVVMY0sUIXUH72fAcBuU1yCsoJcpXCQWxeeaWIbY+eDYj3CGlOWQtct3CVZyZJXKkR6W27cp0oFlNOp1okddbHkTsc7Ou1prDmIbwk3zi0mD9wrPg4fTijK/QKBgQDrYEWT77dQLPcN3RTVn3Ua2d9aj/IWwC330I4qZq2SFKOaB/olnPA6fLNYToTWO70A2ZlsMtVepdThIeYFidkA7Lj7lTVYFdQQzREsO5908A1YWE4sgMEEdMc7n5xKT85vpkPOjBOLZYQ6JjDeWBMDxnXR9/txwbau4bsq3/QFuQ== private.key=MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDNgtaCfu5QlhWfU8bJAooLoX+bo/ARsvoWUJf5NodkGOivze5Lqtu5eq6ptT+gVKK+IEsjpmDsFPMCE2CW7xLZfgbtrWmTPd+fiRb2Z/fMudedo166H5WEgS3+TDWKt7WkLA/3kqvIqdBotuL4BENwZj6CIjGNdG01RNsCaDA/vxTkzx9njz6kfgAda/+wbdOJNwjNRgIb9AyedQT5OKvqRXequzrrOKD9wrm1O4nv8lA6WFg5YEMSW7T6WRIeArZsQr1aHv6qkiu47YreApfdFIWHxd9QinA9WrLPYdWXONr7+xyvqS4MHSJh9ZmCvMsc/HcF3RHJgEwgiC8E6hiZAgMBAAECggEAByZOICwaTmNqTSi0+blE5DKyJdAGQhdf6/bR0rG69BiJv9QCPk+rZUCHYxATLpjDMKoe8xaOuKfh7GiQK7AVj8t6ojouOhkk9n/mdJwZWt38Slesq/z9TqbP2tD769+ISjXeOFa58zk1Lu9t5gL/9aEY+54E607pnbjPhb3qL819/7absLbY1y3GKw2Cwd7RfP8nOWj0ViwnalFjfg6YZS1BL5c9NSg41FzZolwPruZ/bBGbc3nMW2khpuK7CtRk1pRJHUNYuVCsaBU4M4sf3tlZQPOdB6eYmQ3xmPtdnHYB13s588KialXKFlAuO4zG0CFa8DfIKsWDv6xTC1cMgQKBgQD6CjJuu715oKob7ohDTfrSppk4PY/kxWhUkKyKVW1Y1jXQOcd4BwVSyH6s7N8pCSWMwWmoF/t/l2kIcAWNZnsbzAQ8TYOhp1THstXMVb6c7JOL3SQC5RjbgW1RWCalh7/4QVE0xYeEL3qv5I2t9215zKR87Z6LIdJkxxAsHgMSbQKBgQDSaOp0kJZPkQH/75ltaI9exczyoaf+5U/OrnqT2lpRwa+5wqUTPWpTFTCDcJdu8OKCgrKPOQ6NACuX4PbIW/jR+70w7nbC46Tx3JdDYxBlm+6MuHUs5RXufFDJyGoN8lJzoPGax3uxY1kxWwSaSIB0sVXV/P3PIE31I5DbarWjXQKBgQCrRyLm4anYUCtWuN4UpK0lcUPR17Hi9ysRioz2sbAWw53XRk0SNlT6MSc9E4GGnaJgOflDUTJRY4lqYzoac1HvZ6CbIkoCCRq1NRbpQu8wlYo4q8JITWDqtE0LBMRsbYId77hN2uWKse9r37cBrVULsxgWD7uj+QYjTI0Se3iFPQJ/SSYwXFXn68F98Hxb2q1/KnOZzMBmpzcRh8kg1EYVIFc1wF7rBMVVMY0sUIXUH72fAcBuU1yCsoJcpXCQWxeeaWIbY+eDYj3CGlOWQtct3CVZyZJXKkR6W27cp0oFlNOp1okddbHkTsc7Ou1prDmIbwk3zi0mD9wrPg4fTijK/QKBgQDrYEWT77dQLPcN3RTVn3Ua2d9aj/IWwC330I4qZq2SFKOaB/olnPA6fLNYToTWO70A2ZlsMtVepdThIeYFidkA7Lj7lTVYFdQQzREsO5908A1YWE4sgMEEdMc7n5xKT85vpkPOjBOLZYQ6JjDeWBMDxnXR9/txwbau4bsq3/QFuQ==
public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzYLWgn7uUJYVn1PGyQKKC6F/m6PwEbL6FlCX+TaHZBjor83uS6rbuXquqbU/oFSiviBLI6Zg7BTzAhNglu8S2X4G7a1pkz3fn4kW9mf3zLnXnaNeuh+VhIEt/kw1ire1pCwP95KryKnQaLbi+ARDcGY+giIxjXRtNUTbAmgwP78U5M8fZ48+pH4AHWv/sG3TiTcIzUYCG/QMnnUE+Tir6kV3qrs66zig/cK5tTuJ7/JQOlhYOWBDElu0+lkSHgK2bEK9Wh7+qpIruO2K3gKX3RSFh8XfUIpwPVqyz2HVlzja+/scr6kuDB0iYfWZgrzLHPx3Bd0RyYBMIIgvBOoYmQIDAQAB public.key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzYLWgn7uUJYVn1PGyQKKC6F/m6PwEbL6FlCX+TaHZBjor83uS6rbuXquqbU/oFSiviBLI6Zg7BTzAhNglu8S2X4G7a1pkz3fn4kW9mf3zLnXnaNeuh+VhIEt/kw1ire1pCwP95KryKnQaLbi+ARDcGY+giIxjXRtNUTbAmgwP78U5M8fZ48+pH4AHWv/sG3TiTcIzUYCG/QMnnUE+Tir6kV3qrs66zig/cK5tTuJ7/JQOlhYOWBDElu0+lkSHgK2bEK9Wh7+qpIruO2K3gKX3RSFh8XfUIpwPVqyz2HVlzja+/scr6kuDB0iYfWZgrzLHPx3Bd0RyYBMIIgvBOoYmQIDAQAB
access.time=600 access.time=600
@ -36,3 +37,5 @@ url.main=https://ccalm.org/
spring.redis.host=127.0.0.1 spring.redis.host=127.0.0.1
spring.redis.port=6379 spring.redis.port=6379
spring.redis.password=9F3/NKWeOjd815vkadT2DcgVHf6fEpVQXw== spring.redis.password=9F3/NKWeOjd815vkadT2DcgVHf6fEpVQXw==

51
org_ccalm_jwt.yml Normal file
View File

@ -0,0 +1,51 @@
server:
port: 8082
issuer:
name: ccalm
spring:
application:
name: org_ccalm_jwt
datasource:
url: jdbc:postgresql://91.201.214.156:5432/CCALM?ApplicationName=org_ccalm_jwt
username: postgres
password: PasSecrKey1
driver-class-name: org.postgresql.Driver
hikari:
maximum-pool-size: 10
minimum-idle: 5
max-lifetime: 1700000
idle-timeout: 600000
connection-timeout: 30000
connection-test-query: SELECT 1
validation-timeout: 5000
redis:
host: 127.0.0.1
port: 6379
password: 9F3/NKWeOjd815vkadT2DcgVHf6fEpVQXw==
mail:
host: smtp.yandex.ru
port: 465
login: info@ccalm.org
password: fu2lpsoGPGiq1xlRm8ag
captcha:
key: PPExpv36jk4Vzda3NpYnXLfuHCLYXqaNrxlOH/Jr/1M=
time: 600
url:
reset: https://ccalm.org/api/authorization/v02/reset
main: https://ccalm.org/
personal_data:
key: 8YxGFFOd
private:
key: MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDNgtaCfu5QlhWfU8bJAooLoX+bo/ARsvoWUJf5NodkGOivze5Lqtu5eq6ptT+gVKK+IEsjpmDsFPMCE2CW7xLZfgbtrWmTPd+fiRb2Z/fMudedo166H5WEgS3+TDWKt7WkLA/3kqvIqdBotuL4BENwZj6CIjGNdG01RNsCaDA/vxTkzx9njz6kfgAda/+wbdOJNwjNRgIb9AyedQT5OKvqRXequzrrOKD9wrm1O4nv8lA6WFg5YEMSW7T6WRIeArZsQr1aHv6qkiu47YreApfdFIWHxd9QinA9WrLPYdWXONr7+xyvqS4MHSJh9ZmCvMsc/HcF3RHJgEwgiC8E6hiZAgMBAAECggEAByZOICwaTmNqTSi0+blE5DKyJdAGQhdf6/bR0rG69BiJv9QCPk+rZUCHYxATLpjDMKoe8xaOuKfh7GiQK7AVj8t6ojouOhkk9n/mdJwZWt38Slesq/z9TqbP2tD769+ISjXeOFa58zk1Lu9t5gL/9aEY+54E607pnbjPhb3qL819/7absLbY1y3GKw2Cwd7RfP8nOWj0ViwnalFjfg6YZS1BL5c9NSg41FzZolwPruZ/bBGbc3nMW2khpuK7CtRk1pRJHUNYuVCsaBU4M4sf3tlZQPOdB6eYmQ3xmPtdnHYB13s588KialXKFlAuO4zG0CFa8DfIKsWDv6xTC1cMgQKBgQD6CjJuu715oKob7ohDTfrSppk4PY/kxWhUkKyKVW1Y1jXQOcd4BwVSyH6s7N8pCSWMwWmoF/t/l2kIcAWNZnsbzAQ8TYOhp1THstXMVb6c7JOL3SQC5RjbgW1RWCalh7/4QVE0xYeEL3qv5I2t9215zKR87Z6LIdJkxxAsHgMSbQKBgQDSaOp0kJZPkQH/75ltaI9exczyoaf+5U/OrnqT2lpRwa+5wqUTPWpTFTCDcJdu8OKCgrKPOQ6NACuX4PbIW/jR+70w7nbC46Tx3JdDYxBlm+6MuHUs5RXufFDJyGoN8lJzoPGax3uxY1kxWwSaSIB0sVXV/P3PIE31I5DbarWjXQKBgQCrRyLm4anYUCtWuN4UpK0lcUPR17Hi9ysRioz2sbAWw53XRk0SNlT6MSc9E4GGnaJgOflDUTJRY4lqYzoac1HvZ6CbIkoCCRq1NRbpQu8wlYo4q8JITWDqtE0LBMRsbYId77hN2uWKse9r37cBrVULsxgWD7uj+QYjTI0Se3iFPQJ/SSYwXFXn68F98Hxb2q1/KnOZzMBmpzcRh8kg1EYVIFc1wF7rBMVVMY0sUIXUH72fAcBuU1yCsoJcpXCQWxeeaWIbY+eDYj3CGlOWQtct3CVZyZJXKkR6W27cp0oFlNOp1okddbHkTsc7Ou1prDmIbwk3zi0mD9wrPg4fTijK/QKBgQDrYEWT77dQLPcN3RTVn3Ua2d9aj/IWwC330I4qZq2SFKOaB/olnPA6fLNYToTWO70A2ZlsMtVepdThIeYFidkA7Lj7lTVYFdQQzREsO5908A1YWE4sgMEEdMc7n5xKT85vpkPOjBOLZYQ6JjDeWBMDxnXR9/txwbau4bsq3/QFuQ==
public:
key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzYLWgn7uUJYVn1PGyQKKC6F/m6PwEbL6FlCX+TaHZBjor83uS6rbuXquqbU/oFSiviBLI6Zg7BTzAhNglu8S2X4G7a1pkz3fn4kW9mf3zLnXnaNeuh+VhIEt/kw1ire1pCwP95KryKnQaLbi+ARDcGY+giIxjXRtNUTbAmgwP78U5M8fZ48+pH4AHWv/sG3TiTcIzUYCG/QMnnUE+Tir6kV3qrs66zig/cK5tTuJ7/JQOlhYOWBDElu0+lkSHgK2bEK9Wh7+qpIruO2K3gKX3RSFh8XfUIpwPVqyz2HVlzja+/scr6kuDB0iYfWZgrzLHPx3Bd0RyYBMIIgvBOoYmQIDAQAB
access:
time: 600
refresh:
time: 43200

View File

@ -127,19 +127,27 @@ public class MainController implements ServletContextAware {
public String createStrJSONError(int code, String message, String setting, String marker) { public String createStrJSONError(int code, String message, String setting, String marker) {
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try {
json.put("error_code", code); json.put("error_code", code);
json.put("error_message", Arrays.asList(message)); json.put("error_message", Arrays.asList(message));
json.put("error_setting", Arrays.asList(setting)); json.put("error_setting", Arrays.asList(setting));
json.put("error_marker", marker); json.put("error_marker", marker);
} catch (JSONException e) {
return "{}";
}
return json.toString(); return json.toString();
} }
public JSONObject createJSONError(int code, String message, String setting, String marker) { public JSONObject createJSONError(int code, String message, String setting, String marker) {
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try {
json.put("error_code", code); json.put("error_code", code);
json.put("error_message", Arrays.asList(message)); json.put("error_message", Arrays.asList(message));
json.put("error_setting", Arrays.asList(setting)); json.put("error_setting", Arrays.asList(setting));
json.put("error_marker", Arrays.asList(setting)); json.put("error_marker", Arrays.asList(setting));
} catch (JSONException e) {
logger.error(e);
}
return json; return json;
} }
@ -266,6 +274,7 @@ public class MainController implements ServletContextAware {
@ResponseBody @ResponseBody
public String index(Model model,@RequestParam(required=false,name="lng",defaultValue = "1") String language_id) { public String index(Model model,@RequestParam(required=false,name="lng",defaultValue = "1") String language_id) {
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try {
json.put("error_code",0); json.put("error_code",0);
json.put("error_message",""); json.put("error_message","");
json.put("error_marker",(String)null); json.put("error_marker",(String)null);
@ -287,6 +296,9 @@ public class MainController implements ServletContextAware {
json.put("name",application_name); json.put("name",application_name);
//json.put("active_connections",dataSource.getHikariPoolMXBean().getActiveConnections()); //json.put("active_connections",dataSource.getHikariPoolMXBean().getActiveConnections());
//json.put("idle_connections",dataSource.getHikariPoolMXBean().getIdleConnections()); //json.put("idle_connections",dataSource.getHikariPoolMXBean().getIdleConnections());
} catch (JSONException e) {
throw new RuntimeException(e);
}
return json.toString(); return json.toString();
} }
/* /*
@ -299,13 +311,14 @@ public class MainController implements ServletContextAware {
public String get_settings(@CookieValue(value = "jwt_a", defaultValue = "") String jwt_a, @RequestParam(required=false,name="lng",defaultValue = "1") String language_id) { public String get_settings(@CookieValue(value = "jwt_a", defaultValue = "") String jwt_a, @RequestParam(required=false,name="lng",defaultValue = "1") String language_id) {
Translation trt = new Translation(language_id,jdbcTemplate); Translation trt = new Translation(language_id,jdbcTemplate);
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try{
json.put("error_code",0); json.put("error_code",0);
//json.put("error_message",""); //json.put("error_message","");
//json.put("error_marker",(String)null); //json.put("error_marker",(String)null);
try{
if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2) if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2)
{ {
throw new CustomException(10000, trt.trt("Please_send_a_valid_JWT_token"),null); throw new CustomException(10000, trt.trt("Please_log_in"),null);
} }
//Проверяю подпись токена //Проверяю подпись токена
Jws<Claims> claims = null; Jws<Claims> claims = null;
@ -355,13 +368,14 @@ public class MainController implements ServletContextAware {
public String set_settings(SettingModel setting, @CookieValue(value = "jwt_a", defaultValue = "") String jwt_a, @RequestParam(required=false,name="lng",defaultValue = "1") String language_id) { public String set_settings(SettingModel setting, @CookieValue(value = "jwt_a", defaultValue = "") String jwt_a, @RequestParam(required=false,name="lng",defaultValue = "1") String language_id) {
Translation trt = new Translation(language_id,jdbcTemplate); Translation trt = new Translation(language_id,jdbcTemplate);
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try{
json.put("error_code",0); json.put("error_code",0);
//json.put("error_message",""); //json.put("error_message","");
//json.put("error_marker",(String)null); //json.put("error_marker",(String)null);
try{
if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2) if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2)
{ {
throw new CustomException(10000, trt.trt("Please_send_a_valid_JWT_token"),null); throw new CustomException(10000, trt.trt("Please_log_in"),null);
} }
//Проверяю подпись токена //Проверяю подпись токена
Jws<Claims> claims = null; Jws<Claims> claims = null;
@ -423,11 +437,11 @@ public class MainController implements ServletContextAware {
public String access(Model model, @CookieValue(value = "jwt_a", defaultValue = "") String jwt_a,@Nullable @RequestBody ActionName action_name,@CookieValue(value = "lng",defaultValue = "1") String language_id) { public String access(Model model, @CookieValue(value = "jwt_a", defaultValue = "") String jwt_a,@Nullable @RequestBody ActionName action_name,@CookieValue(value = "lng",defaultValue = "1") String language_id) {
Translation trt = new Translation(language_id,jdbcTemplate); Translation trt = new Translation(language_id,jdbcTemplate);
String result=createStrJSONError(10000,trt.trt("Request_not_processed"), (String)null, (String)null); String result=createStrJSONError(10000,trt.trt("Request_not_processed"), (String)null, (String)null);
try {
if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2) if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2)
{ {
result=createStrJSONError(10000,trt.trt("Please_send_a_valid_JWT_token"), (String)null, (String)null); result=createStrJSONError(10000,trt.trt("Please_log_in"), (String)null, (String)null);
return result; return result;
} }
@ -472,7 +486,11 @@ public class MainController implements ServletContextAware {
} }
json.put("data",data); json.put("data",data);
result = json.toString(); result = json.toString();
} catch (Exception e) {
String uuid = UUID.randomUUID().toString();
logger.error(uuid,e);
result=createStrJSONError(10000,trt.trt("Internal_Server_Error"), (String)null, uuid);
}
return result; return result;
} }
@ -481,9 +499,10 @@ public class MainController implements ServletContextAware {
public String captcha(Model model, @RequestBody EmailModel email_model, @RequestParam(required=false,name="lng",defaultValue = "1") String language_id) { public String captcha(Model model, @RequestBody EmailModel email_model, @RequestParam(required=false,name="lng",defaultValue = "1") String language_id) {
Translation trt = new Translation(language_id,jdbcTemplate); Translation trt = new Translation(language_id,jdbcTemplate);
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try{
json.put("error_code",0); json.put("error_code",0);
json.put("error_message",""); json.put("error_message","");
try{
//Генерю Captcha //Генерю Captcha
ImageCaptcha imageCaptcha = new ImageCaptcha.Builder(400, 100) ImageCaptcha imageCaptcha = new ImageCaptcha.Builder(400, 100)
.addContent(new LatinContentProducer(7), .addContent(new LatinContentProducer(7),
@ -532,9 +551,10 @@ public class MainController implements ServletContextAware {
public String create(@RequestBody NewUserModel newUserModel,@RequestParam(required=false,name="lng",defaultValue="1") String language_id) { public String create(@RequestBody NewUserModel newUserModel,@RequestParam(required=false,name="lng",defaultValue="1") String language_id) {
Translation trt = new Translation(language_id,jdbcTemplate); Translation trt = new Translation(language_id,jdbcTemplate);
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try{
json.put("error_code",0); json.put("error_code",0);
json.put("error_message",""); json.put("error_message","");
try{
if(newUserModel.getName().length()<3) { if(newUserModel.getName().length()<3) {
throw new CustomException(10000, trt.trt("The_name_field_is_empty"),null); throw new CustomException(10000, trt.trt("The_name_field_is_empty"),null);
} }
@ -665,12 +685,13 @@ public class MainController implements ServletContextAware {
public String info(Model model, @CookieValue(value = "jwt_a", defaultValue = "") String jwt_a, @CookieValue(value = "lng",defaultValue="1") String language_id) { public String info(Model model, @CookieValue(value = "jwt_a", defaultValue = "") String jwt_a, @CookieValue(value = "lng",defaultValue="1") String language_id) {
Translation trt = new Translation(language_id,jdbcTemplate); Translation trt = new Translation(language_id,jdbcTemplate);
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try {
json.put("error_code",0); json.put("error_code",0);
json.put("error_message",""); json.put("error_message","");
try {
if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2) if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2)
{ {
throw new CustomException(10000, trt.trt("Please_send_a_valid_JWT_token"),null); throw new CustomException(10000, trt.trt("Please_log_in"),null);
} }
//Проверяю подпись токена //Проверяю подпись токена
Jws<Claims> claims = null; Jws<Claims> claims = null;
@ -733,9 +754,10 @@ public class MainController implements ServletContextAware {
Translation trt = new Translation(language_id,jdbcTemplate); Translation trt = new Translation(language_id,jdbcTemplate);
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try {
json.put("error_code",0); json.put("error_code",0);
json.put("error_message",""); json.put("error_message","");
try {
if(loginModel.getLogin().isEmpty()) if(loginModel.getLogin().isEmpty())
throw new CustomException(10000,trt.trt("The_login_field_is_empty"),null); throw new CustomException(10000,trt.trt("The_login_field_is_empty"),null);
if(!Tools.isValidEmail(loginModel.getLogin())) if(!Tools.isValidEmail(loginModel.getLogin()))
@ -1032,6 +1054,10 @@ public class MainController implements ServletContextAware {
java.lang.String uuid = UUID.randomUUID().toString(); java.lang.String uuid = UUID.randomUUID().toString();
logger.error("Error executing SQL query", uuid, ex); logger.error("Error executing SQL query", uuid, ex);
throw new CustomException(10000, trt.trt("Error_executing_SQL_query"),uuid); throw new CustomException(10000, trt.trt("Error_executing_SQL_query"),uuid);
}catch (Exception e) {
String uuid = UUID.randomUUID().toString();
logger.error(uuid,e);
throw new CustomException(10000, trt.trt("Internal_Server_Error"),uuid);
} }
Map<String, Integer> result = new HashMap<>(); Map<String, Integer> result = new HashMap<>();
@ -1047,9 +1073,10 @@ public class MainController implements ServletContextAware {
public String newtotp(HttpServletRequest request, @RequestBody LoginModel loginModel, @RequestParam(required=false,name="lng",defaultValue="1") String language_id) { public String newtotp(HttpServletRequest request, @RequestBody LoginModel loginModel, @RequestParam(required=false,name="lng",defaultValue="1") String language_id) {
Translation trt = new Translation(language_id,jdbcTemplate); Translation trt = new Translation(language_id,jdbcTemplate);
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try {
json.put("error_code",0); json.put("error_code",0);
json.put("error_message",""); json.put("error_message","");
try {
if(loginModel.getLogin().isEmpty()) if(loginModel.getLogin().isEmpty())
throw new CustomException(10000,trt.trt("The_login_field_is_empty"),null); throw new CustomException(10000,trt.trt("The_login_field_is_empty"),null);
if(!Tools.isValidEmail(loginModel.getLogin())) if(!Tools.isValidEmail(loginModel.getLogin()))
@ -1219,14 +1246,14 @@ public class MainController implements ServletContextAware {
Translation trt = new Translation(language_id,jdbcTemplate); Translation trt = new Translation(language_id,jdbcTemplate);
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try {
json.put("error_code",0); json.put("error_code",0);
json.put("error_message",""); json.put("error_message","");
try {
if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2 || jwt_r.equals("") || countOccurrences(jwt_r, '.')!=2 ) if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2 || jwt_r.equals("") || countOccurrences(jwt_r, '.')!=2 )
{ {
logout(response,request); logout(response,request);
throw new CustomException(10000, trt.trt("Please_send_a_valid_JWT_token"),null); throw new CustomException(10000, trt.trt("Please_log_in"),null);
} }
//Разбираю токен без проверки, чтобы выбрать email //Разбираю токен без проверки, чтобы выбрать email
@ -1317,33 +1344,32 @@ public class MainController implements ServletContextAware {
Translation trt = new Translation(language_id,jdbcTemplate); Translation trt = new Translation(language_id,jdbcTemplate);
String result=createHTMLError(1,trt.trt("Request_not_processed")); String result=createHTMLError(1,trt.trt("Request_not_processed"));
try {
int index = token.indexOf("."); int index = token.indexOf(".");
if(index<0) if (index < 0)
return createHTMLError(10000,trt.trt("Please_send_a_valid_token")); return createHTMLError(10000, trt.trt("Please_send_a_valid_token"));
String payload = token.substring(0, index); String payload = token.substring(0, index);
String signature1 = token.substring(index+1); String signature1 = token.substring(index + 1);
String signature2 = Tools.generateSignature(captchaKey,payload); String signature2 = Tools.generateSignature(captchaKey, payload);
if(! signature1.equals(signature2)) if (!signature1.equals(signature2)) {
{ return createHTMLError(1, trt.trt("The_signature_did_not_match"));
return createHTMLError(1,trt.trt("The_signature_did_not_match"));
} }
//расшифровываю //расшифровываю
JSONObject jToken = new JSONObject(Tools.decryptText(captchaKey,payload)); JSONObject jToken = new JSONObject(Tools.decryptText(captchaKey, payload));
if(jToken==null) if (jToken == null)
return createHTMLError(10000,trt.trt("Please_send_a_valid_JSON_string_in_your_token")); return createHTMLError(10000, trt.trt("Please_send_a_valid_JSON_string_in_your_token"));
if(jToken.getLong("exp")<Instant.now().getEpochSecond()){ if (jToken.getLong("exp") < Instant.now().getEpochSecond()) {
return createHTMLError(10000,trt.trt("Captcha_is_outdated")); return createHTMLError(10000, trt.trt("Captcha_is_outdated"));
} }
if (!Tools.isValidEmail(jToken.getString("email"))) { if (!Tools.isValidEmail(jToken.getString("email"))) {
return createHTMLError(10000,trt.trt("The_email_field_is_incorrect")); return createHTMLError(10000, trt.trt("The_email_field_is_incorrect"));
} }
//Проверяю на то что не нажали много раз на востановление пароля //Проверяю на то что не нажали много раз на востановление пароля
long id=0; long id = 0;
String sql = "select id from main._users where del=false and password_new=:password_new and email=:email"; String sql = "select id from main._users where del=false and password_new=:password_new and email=:email";
MapSqlParameterSource parameters = new MapSqlParameterSource(); MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("password_new", jToken.getString("password")); parameters.addValue("password_new", jToken.getString("password"));
@ -1352,7 +1378,7 @@ public class MainController implements ServletContextAware {
for (int i = 0; i < ret.size(); i++) { for (int i = 0; i < ret.size(); i++) {
id = (new JSONObject(ret.get(i))).getLong("id"); id = (new JSONObject(ret.get(i))).getLong("id");
} }
if(id==0) if (id == 0)
return createHTMLError(10000, trt.trt("The_password_update_request_has_expired")); return createHTMLError(10000, trt.trt("The_password_update_request_has_expired"));
//Теперь обновляем пароль в базе //Теперь обновляем пароль в базе
@ -1360,7 +1386,11 @@ public class MainController implements ServletContextAware {
parameters = new MapSqlParameterSource(); parameters = new MapSqlParameterSource();
parameters.addValue("email", jToken.getString("email")); parameters.addValue("email", jToken.getString("email"));
int cnt = jdbcTemplate.update(sql, parameters); int cnt = jdbcTemplate.update(sql, parameters);
} catch (Exception e) {
String uuid = UUID.randomUUID().toString();
logger.error(uuid,e);
return createHTMLError(10000,trt.trt("Internal_Server_Error"));
}
return createHTMLError(0,trt.trt("The_password_has_been_changed_and_you_will_be_redirected_to_the_main_page")); return createHTMLError(0,trt.trt("The_password_has_been_changed_and_you_will_be_redirected_to_the_main_page"));
} }
@ -1369,8 +1399,8 @@ public class MainController implements ServletContextAware {
public String restore(Model model, @RequestBody RestoreModel restore, @RequestParam(required=false,name="lng",defaultValue = "1") String language_id) { public String restore(Model model, @RequestBody RestoreModel restore, @RequestParam(required=false,name="lng",defaultValue = "1") String language_id) {
Translation trt = new Translation(language_id,jdbcTemplate); Translation trt = new Translation(language_id,jdbcTemplate);
String result=createStrJSONError(10000,trt.trt("Request_not_processed"), (String)null, (String)null); String result=createStrJSONError(10000,trt.trt("Request_not_processed"), (String)null, (String)null);
try{
//Connection conn = getConnection(); //Connection conn = getConnection();
int index = restore.getToken().indexOf("."); int index = restore.getToken().indexOf(".");
@ -1455,6 +1485,11 @@ public class MainController implements ServletContextAware {
logger.error(uuid, ex); logger.error(uuid, ex);
return createStrJSONError(10000,trt.trt("Failed_send_mail_to_s"), token.getString("email"),uuid); return createStrJSONError(10000,trt.trt("Failed_send_mail_to_s"), token.getString("email"),uuid);
} }
} catch (Exception e) {
String uuid = UUID.randomUUID().toString();
logger.error(uuid,e);
return createStrJSONError(10000,trt.trt("Internal_Server_Error"), (String)null,uuid);
}
return createStrJSONError(0, trt.trt("A_recovery_link_has_been_sent_to_your_email"),(String)null,(String)null); return createStrJSONError(0, trt.trt("A_recovery_link_has_been_sent_to_your_email"),(String)null,(String)null);
} }
@ -1464,9 +1499,10 @@ public class MainController implements ServletContextAware {
Translation trt = new Translation(language_id,jdbcTemplate); Translation trt = new Translation(language_id,jdbcTemplate);
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try {
json.put("error_code",0); json.put("error_code",0);
json.put("error_message",""); json.put("error_message","");
try {
if(update==null) if(update==null)
throw new CustomException(10000,trt.trt("Please_send_a_valid_JSON_string_in_your_request"),null); throw new CustomException(10000,trt.trt("Please_send_a_valid_JSON_string_in_your_request"),null);
if(update.getLogin().equals("")) if(update.getLogin().equals(""))
@ -1547,6 +1583,10 @@ public class MainController implements ServletContextAware {
} catch (CustomException e) { } catch (CustomException e) {
json = e.getJson(); json = e.getJson();
} catch (Exception e) {
String uuid = UUID.randomUUID().toString();
logger.error(uuid,e);
return createStrJSONError(10000,trt.trt("Internal_Server_Error"), (String)null,uuid);
} finally { } finally {
} }
return json.toString(); return json.toString();
@ -1560,7 +1600,7 @@ public class MainController implements ServletContextAware {
if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2) if(jwt_a.equals("") || countOccurrences(jwt_a, '.')!=2)
{ {
return createStrJSONError(10000,trt.trt("Please_send_a_valid_JWT_token"),(String)null,(String)null); return createStrJSONError(10000,trt.trt("Please_log_in"),(String)null,(String)null);
} }
//Connection conn = getConnection(); //Connection conn = getConnection();
//Checking the token signature //Checking the token signature

View File

@ -1,11 +1,15 @@
package org.ccalm.jwt.tools; package org.ccalm.jwt.tools;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
public class CustomException extends Exception { public class CustomException extends Exception {
private static final Logger logger = LogManager.getLogger(CustomException.class);
private int errorCode; private int errorCode;
private String marker; private String marker;
private List<String> errorMessages; private List<String> errorMessages;
@ -59,10 +63,14 @@ public class CustomException extends Exception {
public JSONObject getJson() { public JSONObject getJson() {
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
try {
json.put("error_code", this.getErrorCode()); json.put("error_code", this.getErrorCode());
json.put("error_message", this.getErrorMessages()); json.put("error_message", this.getErrorMessages());
json.put("error_setting", this.getErrorSettings()); json.put("error_setting", this.getErrorSettings());
json.put("error_marker", this.getErrorMarker()); json.put("error_marker", this.getErrorMarker());
} catch (JSONException e) {
logger.error("Error", e);
}
return json; return json;
} }
} }

View File

@ -80,6 +80,8 @@ public class Storage implements AutoCloseable {
} }
} catch (SQLException e) { } catch (SQLException e) {
logger.error("An error occurred", e); logger.error("An error occurred", e);
} catch (Exception e) {
logger.error("An error occurred", e);
} }
return result; return result;
} }

View File

@ -25,9 +25,11 @@
</encoder> </encoder>
</appender> </appender>
<root level="info"> <!--root level="info"-->
<root level="warn">
<appender-ref ref="FILE" /> <appender-ref ref="FILE" />
<appender-ref ref="CONSOLE" /> <appender-ref ref="CONSOLE" />
</root> </root>
</configuration> </configuration>

110
update_password.py Normal file
View File

@ -0,0 +1,110 @@
import psycopg2
import re
import yaml
def generate_password(length=8):
# Определяем возможные символы для разных категорий
lower_case = string.ascii_lowercase
upper_case = string.ascii_uppercase
digits = string.digits
special_characters = string.punctuation
# Гарантируем, что в пароле будет хотя бы один символ каждого типа
password = [
secrets.choice(lower_case), # строчная буква
secrets.choice(upper_case), # заглавная буква
secrets.choice(digits), # цифра
secrets.choice(special_characters) # спецсимвол
]
# Заполняем оставшиеся символы случайными из всех категорий
all_characters = lower_case + upper_case + digits + special_characters
password += [secrets.choice(all_characters) for _ in range(length - 4)]
# Перемешиваем полученные символы
secrets.SystemRandom().shuffle(password)
# Собираем строку из символов и возвращаем
return ''.join(password)
# Функция для чтения конфигурации из YAML файла
def get_configurations(properties_file):
with open(properties_file, 'r') as file:
config = yaml.safe_load(file) # Чтение YAML файла
# Извлекаем данные из конфигурации
db_url = config.get('spring', {}).get('datasource', {}).get('url', '')
db_user = config.get('spring', {}).get('datasource', {}).get('username', '')
current_password = config.get('spring', {}).get('datasource', {}).get('password', '')
# Разбираем URL для получения host, port, и dbname
match = re.match(r'jdbc:postgresql://([^:]+):(\d+)/([^?]+)', db_url)
if match:
db_host = match.group(1)
db_port = match.group(2)
db_name = match.group(3)
else:
raise ValueError("Database URL is invalid in the properties file.")
return db_host, db_port, db_name, db_user, current_password
# Функция для обновления пароля в файле конфигурации
def update_password_in_file(properties_file, current_password, new_password):
with open(properties_file, 'r') as file:
content = file.read()
# Заменяем старый пароль на новый
updated_content = re.sub(rf'spring.datasource.password={current_password}', f'spring.datasource.password={new_password}', content)
with open(properties_file, 'w') as file:
file.write(updated_content)
# Основная функция для смены пароля в PostgreSQL
def change_postgresql_password(db_host, db_port, db_name, db_user, current_password, new_password):
try:
# Подключаемся к PostgreSQL с использованием старого пароля
conn = psycopg2.connect(
dbname=db_name,
user=db_user,
password=current_password,
host=db_host,
port=db_port
)
conn.autocommit = True
# Создаем курсор для выполнения SQL-запроса
cursor = conn.cursor()
# Запрос для изменения пароля пользователя
cursor.execute(f"ALTER USER {db_user} WITH PASSWORD '{new_password}';")
cursor.close()
conn.close()
print(f"Password for user {db_user} successfully changed.")
except Exception as e:
print(f"Error changing password in PostgreSQL: {e}")
return False
return True
# Главная логика скрипта
def main():
# Путь к файлу конфигурации Spring Boot
properties_file = "application.yml"
# Получаем данные из файла конфигурации
db_host, db_port, db_name, db_user, current_password = get_configurations(properties_file)
# Новый пароль
new_password = generate_password() # Укажите новый пароль здесь
# Меняем пароль в PostgreSQL
if change_postgresql_password(db_host, db_port, db_name, db_user, current_password, new_password):
# Обновляем пароль в файле конфигурации
update_password_in_file(properties_file, current_password, new_password)
print(f"Password updated successfully in {properties_file}.")
else:
print("Password change failed.")
if __name__ == "__main__":
main()