Changeset 11487 for trunk/oscam-ecm.c
- Timestamp:
- 01/23/19 20:12:57 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/oscam-ecm.c
r11483 r11487 24 24 #include "oscam-work.h" 25 25 #include "reader-common.h" 26 #include "module-cccam-data.h" 26 27 27 28 extern CS_MUTEX_LOCK ecmcache_lock; … … 919 920 int32_t penalty_duration = 0; 920 921 int32_t delay = 0; 922 int8_t max_ecms_per_minute = 0; 921 923 char *info1 = NULL; 922 924 char *info2 = NULL; … … 924 926 char *info4 = NULL; 925 927 char *info5 = NULL; 928 char *info6 = NULL; 926 929 927 930 // **global or user value? … … 943 946 info4 = client->account->acosc_delay == -1 ? "Globalvalue" : "Uservalue"; 944 947 948 max_ecms_per_minute = client->account->acosc_max_ecms_per_minute == -1 ? cfg.acosc_max_ecms_per_minute : client->account->acosc_max_ecms_per_minute; 949 info6 = client->account->acosc_max_ecms_per_minute == -1 ? "Globalvalue" : "Uservalue"; 950 945 951 //** 946 952 947 if((er->rc < E_NOTFOUND && max_active_sids > 0) || zap_limit > 0 )953 if((er->rc < E_NOTFOUND && max_active_sids > 0) || zap_limit > 0 || max_ecms_per_minute > 0) 948 954 { 949 955 int8_t k = 0; … … 951 957 time_t zaptime = time(NULL); 952 958 953 if(client->account->acosc_penalty_active == 3&& client->account->acosc_penalty_until <= zaptime) // reset penalty_active959 if(client->account->acosc_penalty_active == 4 && client->account->acosc_penalty_until <= zaptime) // reset penalty_active 954 960 { 955 961 client->account->acosc_penalty_active = 0; … … 982 988 } 983 989 990 if(client->account->acosc_penalty_active == 0 && max_ecms_per_minute > 0 && client->n_request[1] >= max_ecms_per_minute && penalty != 4) // max ecms per minute reached 991 { 992 client->account->acosc_penalty_active = 3; 993 client->account->acosc_penalty_until = zaptime + penalty_duration; 994 } 995 996 if(client->account->acosc_penalty_active == 0 && max_ecms_per_minute > 0 && client->n_request[1] > 0 && penalty == 4) // max ecms per minute with hidecards penalty 997 { 998 client->account->acosc_penalty_active = 3; 999 client->account->acosc_penalty_until = zaptime + penalty_duration; 1000 } 1001 984 1002 if(client->account->acosc_penalty_active > 0) 985 1003 { 986 if(client->account->acosc_penalty_active == 3)1004 if(client->account->acosc_penalty_active == 4) 987 1005 { cs_log_dbg(D_TRACE, "[zaplist] ACoSC for Client: %s penalty_duration: %ld seconds left(%s)", username(client), client->account->acosc_penalty_until - zaptime, info3); } 988 1006 … … 997 1015 if(client->account->acosc_penalty_active == 2) 998 1016 { cs_log("[zaplist] ACoSC for Client: %s zap_limit reached: %i:%i(%s) penalty: 1(%s) send null CW", username(client), client->account->acosc_user_zap_count, zap_limit, info5, info2); } 999 1017 if(client->account->acosc_penalty_active == 3) 1018 { cs_log("[maxecms] ACoSC for Client: %s max_ecms_per_minute reached: ecms_last_minute=%i ecms_now=%i max=%i(%s) penalty: 1(%s) send null CW", username(client), client->n_request[0], client->n_request[1], max_ecms_per_minute, info6, info2); } 1000 1019 break; 1001 1020 … … 1007 1026 if(client->account->acosc_penalty_active == 2) 1008 1027 { cs_log("[zaplist] ACoSC for Client: %s zap_limit reached: %i:%i(%s) penalty: 2(%s) BAN Client - Kill and set Client to failban list for %i sec.", username(client), client->account->acosc_user_zap_count, zap_limit, info5, info2, penalty_duration); } 1009 1028 if(client->account->acosc_penalty_active == 3) 1029 { cs_log("[maxecms] ACoSC for Client: %s max_ecms_per_minute reached: ecms_last_minute=%i ecms_now=%i max=%i(%s) penalty: 2(%s) BAN Client - Kill and set Client to failban list for %i sec.", username(client), client->n_request[0], client->n_request[1], max_ecms_per_minute, info6, info2, penalty_duration); } 1010 1030 cs_add_violation_acosc(client, client->account->usr, penalty_duration); 1011 1031 add_job(client, ACTION_CLIENT_KILL, NULL, 0); … … 1023 1043 if(client->account->acosc_penalty_active == 2) 1024 1044 { cs_log("[zaplist] ACoSC for Client: %s zap_limit reached: %i:%i(%s) penalty: 3(%s) delay CW: %ims(%s)", username(client), client->account->acosc_user_zap_count, zap_limit, info5, info2, delay, info4); } 1045 if(client->account->acosc_penalty_active == 3) 1046 { cs_log("[maxecms] ACoSC for Client: %s max_ecms_per_minute reached: ecms_last_minute=%i ecms_now=%i max=%i(%s) penalty: 3(%s) delay CW: %ims(%s)", username(client), client->n_request[0], client->n_request[1], max_ecms_per_minute, info6, info2, delay, info4); } 1025 1047 cs_writeunlock(__func__, &clientlist_lock); 1026 1048 cs_sleepms(delay); … … 1029 1051 snprintf(sreason, sizeof(sreason)-1, " (%d ms penalty delay)", delay); 1030 1052 break; 1031 1053 case 4: // hidecards 1054 if(client->account->acosc_penalty_active == 3) 1055 { 1056 cs_log("[maxecms] ACoSC for Client: %s ecms_last_minute=%i ecms_now=%i max=%i(%s) penalty: 4(%s) hidecards - hidecards to the client for %i sec", username(client), client->n_request[0], client->n_request[1], max_ecms_per_minute, info6, info2, penalty_duration); 1057 client->start_hidecards = 1; 1058 } 1059 break; 1032 1060 default: // logging 1033 1061 if(client->account->acosc_penalty_active == 1) … … 1035 1063 if(client->account->acosc_penalty_active == 2) 1036 1064 { cs_log("[zaplist] ACoSC for Client: %s zap_limit reached: %i:%i(%s) penalty: 0(%s) only logging", username(client), client->account->acosc_user_zap_count, zap_limit, info5, info2); } 1037 1065 if(client->account->acosc_penalty_active == 3) 1066 { cs_log("[maxecms] ACoSC for Client: %s max_ecms_per_minute reached: ecms_last_minute=%i ecms_now=%i max=%i(%s) penalty: 0(%s) only logging", username(client), client->n_request[0], client->n_request[1], max_ecms_per_minute, info6, info2); } 1038 1067 break; 1039 1068 } 1040 1069 client->account->acosc_user_zap_count = 0; // we got already a penalty 1041 1070 client->account->acosc_penalty_active = 3; 1071 client->account->acosc_penalty_active = 4; 1042 1072 } 1043 1073 } … … 1089 1119 if(is_fake) 1090 1120 { er->rc = E_FAKE; } 1121 1122 #ifdef CS_ANTICASC 1123 cs_writelock(__func__, &clientlist_lock); 1124 if(client->start_hidecards) 1125 { 1126 client->start_hidecards = 0; 1127 add_job(client, ACTION_CLIENT_HIDECARDS, NULL, 0); 1128 } 1129 cs_writeunlock(__func__, &clientlist_lock); 1130 #endif 1091 1131 1092 1132 if(!(er->rc == E_SLEEPING && client->cwlastresptime == 0))
Note:
See TracChangeset
for help on using the changeset viewer.