Changeset 3582
- Timestamp:
- 10/17/10 12:22:37 (13 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/oscam-config.c
r3581 r3582 2268 2268 int isphysical = (rdr->typ & R_IS_NETWORK)?0:1; 2269 2269 char *ctyp =""; 2270 static c onst char *typtxt[] = { "unknown", "mouse", "mouse", "sc8in1", "mp35", "mouse", "internal", "smartreader", "pcsc" };2270 static char *typtxt[] = { "unknown", "mouse", "mouse", "sc8in1", "mp35", "mouse", "internal", "smartreader", "pcsc" }; 2271 2271 if (isphysical) 2272 2272 ctyp = typtxt[rdr->typ]; -
trunk/oscam-http.c
r3581 r3582 16 16 #include "module-stat.h" 17 17 18 extern struct s_reader reader[CS_MAXREADER];19 18 extern void restart_cardreader(int ridx, int restart); 20 19 static int running = 1; … … 658 657 659 658 void send_oscam_reader(struct templatevars *vars, FILE *f, struct uriparams *params, struct in_addr in) { 660 int readeridx, isphysical = 0; 661 char *ctyp; 659 int readeridx=0; 662 660 int i; 663 661 //uchar dummy[1]={0x00}; … … 688 686 } 689 687 690 for(readeridx = 0; readeridx < CS_MAXREADER && reader[readeridx].label[0]; readeridx++); 691 tpl_printf(vars, 0, "NEXTREADER", "Reader-%d", readeridx); //Next Readername 692 693 for(readeridx = 0; readeridx < CS_MAXREADER; readeridx++) { 694 isphysical = 0; 695 688 struct s_reader *rdr; 689 for (i=0,rdr=first_reader; rdr && rdr->label[0]; rdr=rdr->next, i++); 690 tpl_printf(vars, 0, "NEXTREADER", "Reader-%d", i); //Next Readername 691 692 for (i=0,rdr=first_reader; rdr ; rdr=rdr->next, i++) { 696 693 if(reader[readeridx].label[0] && reader[readeridx].typ && !reader[readeridx].deleted) { 697 694 … … 700 697 tpl_addVar(vars, 0, "READERNAMEENC", tpl_addTmp(vars, urlencode(reader[readeridx].label))); 701 698 702 switch(reader[readeridx].typ) { 703 case R_MP35 : 704 ctyp = "mp35"; 705 isphysical = 1; 706 break; 707 case R_MOUSE : 708 ctyp = "mouse"; 709 isphysical = 1; 710 break; 711 case R_INTERNAL: 712 ctyp = "intern"; 713 isphysical = 1; 714 break; 715 case R_SMART : 716 ctyp = "smartreader"; 717 isphysical = 1; 718 break; 719 case R_SERIAL : 720 ctyp = "serial"; 721 isphysical = 1; 722 break; 723 case R_DB2COM1 : 724 ctyp = "dbox COM1"; 725 isphysical = 1; 726 break; 727 case R_DB2COM2 : 728 ctyp = "dbox COM2"; 729 isphysical = 1; 730 break; 731 #ifdef HAVE_PCSC 732 case R_PCSC : 733 ctyp="pcsc"; 734 isphysical = 1; 735 break; 736 #endif 737 default : ctyp = reader[readeridx].ph.desc; break; 738 } 699 int isphysical = (rdr->typ & R_IS_NETWORK)?0:1; 700 char *ctyp =""; 701 static char *typtxt[] = { "unknown", "mouse", "mouse", "sc8in1", "mp35", "mouse", "internal", "smartreader", "pcsc" }; 702 if (isphysical) 703 ctyp = typtxt[rdr->typ]; 704 else 705 ctyp = rdr->ph.desc; 706 if ((rdr->typ == R_NEWCAMD) && (rdr->ncd_proto == NCD_524)) 707 ctyp = "newcamd524"; 739 708 740 709 tpl_printf(vars, 0, "EMMERRORUK", "%d", reader[readeridx].emmerror[UNKNOWN]); … … 797 766 char *value; 798 767 799 for(ridx = 0; ridx < CS_MAXREADER && reader[ridx].label[0]; ridx++); //last reader 768 struct s_reader *rdr; 769 for (ridx=0,rdr=first_reader; rdr && rdr->label[0]; rdr=rdr->next, ridx++); //last reader 800 770 801 771 if(strcmp(getParam(params, "action"), "Add") == 0) { 802 772 // Add new reader 803 memset(&reader[ridx], 0, sizeof(struct s_reader)); 804 reader[ridx].enable = 1; 805 reader[ridx].tcp_rto = 30; 806 reader[ridx].show_cls = 10; 807 reader[ridx].maxqlen = CS_MAXQLEN; 808 reader[ridx].mhz = 357; 809 reader[ridx].cardmhz = 357; 810 reader[ridx].deprecated = 0; 811 reader[ridx].cachecm = 1; 812 strcpy(reader[ridx].pincode, "none"); 813 reader[ridx].ndsversion = 0; 814 for (i = 1; i < CS_MAXCAIDTAB; reader[ridx].ctab.mask[i++] = 0xffff); 773 reader[ridx-1].next = rdr; //FIXME 774 rdr->next = NULL; 775 memset(&rdr, 0, sizeof(struct s_reader)); 776 rdr->enable = 1; 777 rdr->tcp_rto = 30; 778 rdr->show_cls = 10; 779 rdr->maxqlen = CS_MAXQLEN; 780 rdr->mhz = 357; 781 rdr->cardmhz = 357; 782 rdr->deprecated = 0; 783 rdr->cachecm = 1; 784 strcpy(rdr->pincode, "none"); 785 rdr->ndsversion = 0; 786 for (i = 1; i < CS_MAXCAIDTAB; rdr->ctab.mask[i++] = 0xffff); 815 787 for (i = 0; i < (*params).paramcount; ++i) { 816 788 if (strcmp((*params).params[i], "action")) 817 789 chk_reader((*params).params[i], (*params).values[i], &reader[ridx]); 818 790 } 819 reader_ = r eader[ridx].label;791 reader_ = rdr->label; 820 792 821 793 } else if(strcmp(getParam(params, "action"), "Save") == 0) { 822 for (ridx = 0; ridx < CS_MAXREADER && strcmp(reader_, reader[ridx].label) != 0;++ridx);794 for (ridx=0,rdr=first_reader; rdr && strcmp(reader_, rdr->label); rdr=rdr->next, ++ridx); 823 795 char servicelabels[255]=""; 824 796 825 clear_caidtab(&r eader[ridx].ctab);826 clear_ftab(&r eader[ridx].ftab);827 clear_ftab(&r eader[ridx].fchid);828 829 r eader[ridx].grp = 0;830 r eader[ridx].auprovid = 0;797 clear_caidtab(&rdr->ctab); 798 clear_ftab(&rdr->ftab); 799 clear_ftab(&rdr->fchid); 800 801 rdr->grp = 0; 802 rdr->auprovid = 0; 831 803 for(i = 0; i < (*params).paramcount; ++i) { 832 804 if ((strcmp((*params).params[i], "reader")) && (strcmp((*params).params[i], "action"))) { … … 839 811 //printf("param %s value %s\n",(*params).params[i], (*params).values[i]); 840 812 } 841 chk_reader("services", servicelabels, &reader[ridx]);813 chk_reader("services", servicelabels, rdr); 842 814 843 815 if(write_server()==0) … … 847 819 } 848 820 849 for(ridx = 0; ridx < CS_MAXREADER && strcmp(reader_, reader[ridx].label) != 0; ++ridx); 850 851 tpl_addVar(vars, 0, "READERNAME", reader[ridx].label); 852 853 if(reader[ridx].enable) 821 for (ridx=0,rdr=first_reader; rdr && strcmp(reader_, rdr->label); rdr=rdr->next, ++ridx); 822 tpl_addVar(vars, 0, "READERNAME", rdr->label); 823 824 if(rdr->enable) 854 825 tpl_addVar(vars, 0, "ENABLED", "checked"); 855 826 856 tpl_printf(vars, 0, "ACCOUNT", "%s", r eader[ridx].r_usr);827 tpl_printf(vars, 0, "ACCOUNT", "%s", rdr->r_usr); 857 828 858 829 #ifdef CS_WITH_GBOX 859 830 if (strlen(reader[i].gbox_pwd) > 0) 860 831 tpl_printf(vars, 0, "PASSWORD", "%s", reader[i].gbox_pwd); 861 else if (strlen(r eader[ridx].r_pwd) > 0)862 tpl_printf(vars, 0, "PASSWORD", "%s", r eader[ridx].r_pwd);832 else if (strlen(rdr->r_pwd) > 0) 833 tpl_printf(vars, 0, "PASSWORD", "%s", rdr->r_pwd); 863 834 else 864 835 tpl_printf(vars, 0, "PASSWORD", "%s", ""); 865 836 #else 866 tpl_printf(vars, 0, "PASSWORD", "%s", r eader[ridx].r_pwd);837 tpl_printf(vars, 0, "PASSWORD", "%s", rdr->r_pwd); 867 838 #endif 868 839 869 840 for (i=0; i<14; i++) 870 tpl_printf(vars, 1, "NCD_KEY", "%02X", r eader[ridx].ncd_key[i]);871 872 tpl_addVar(vars, 0, "PINCODE", r eader[ridx].pincode);873 //tpl_addVar(vars, 0, "EMMFILE", (char *)r eader[ridx].emmfile);874 tpl_printf(vars, 0, "INACTIVITYTIMEOUT", "%d", r eader[ridx].tcp_ito);875 tpl_printf(vars, 0, "RECEIVETIMEOUT", "%d", r eader[ridx].tcp_rto);876 tpl_printf(vars, 0, "DISABLESERVERFILTER", "%d", r eader[ridx].ncd_disable_server_filt);877 878 if(r eader[ridx].fallback)841 tpl_printf(vars, 1, "NCD_KEY", "%02X", rdr->ncd_key[i]); 842 843 tpl_addVar(vars, 0, "PINCODE", rdr->pincode); 844 //tpl_addVar(vars, 0, "EMMFILE", (char *)rdr->emmfile); 845 tpl_printf(vars, 0, "INACTIVITYTIMEOUT", "%d", rdr->tcp_ito); 846 tpl_printf(vars, 0, "RECEIVETIMEOUT", "%d", rdr->tcp_rto); 847 tpl_printf(vars, 0, "DISABLESERVERFILTER", "%d", rdr->ncd_disable_server_filt); 848 849 if(rdr->fallback) 879 850 tpl_addVar(vars, 0, "FALLBACKCHECKED", "checked"); 880 851 881 tpl_printf(vars, 0, "LOGPORT", "%d", r eader[ridx].log_port);882 883 if(r eader[ridx].boxid)884 tpl_printf(vars, 0, "BOXID", "%08X", r eader[ridx].boxid);885 886 tpl_addVar(vars, 0, "USER", r eader[ridx].r_usr);887 tpl_addVar(vars, 0, "PASS", r eader[ridx].r_pwd);888 889 if(r eader[ridx].audisabled)852 tpl_printf(vars, 0, "LOGPORT", "%d", rdr->log_port); 853 854 if(rdr->boxid) 855 tpl_printf(vars, 0, "BOXID", "%08X", rdr->boxid); 856 857 tpl_addVar(vars, 0, "USER", rdr->r_usr); 858 tpl_addVar(vars, 0, "PASS", rdr->r_pwd); 859 860 if(rdr->audisabled) 890 861 tpl_addVar(vars, 0, "AUDISABLED", "checked"); 891 862 892 if(r eader[ridx].auprovid)893 tpl_printf(vars, 0, "AUPROVID", "%06lX", r eader[ridx].auprovid);894 895 if(r eader[ridx].force_irdeto)863 if(rdr->auprovid) 864 tpl_printf(vars, 0, "AUPROVID", "%06lX", rdr->auprovid); 865 866 if(rdr->force_irdeto) 896 867 tpl_addVar(vars, 0, "FORCEIRDETOCHECKED", "checked"); 897 868 … … 899 870 int has_aeskey = 0; 900 871 for (i = 0; i < 16 ;i++) { 901 if(r eader[ridx].aes_key[i]) {872 if(rdr->aes_key[i]) { 902 873 has_aeskey++; 903 874 } 904 875 } 905 876 if (has_aeskey) { 906 for (i = 0; i < 16; i++) tpl_printf(vars, 1, "AESKEY", "%02X", r eader[ridx].aes_key[i]);877 for (i = 0; i < 16; i++) tpl_printf(vars, 1, "AESKEY", "%02X", rdr->aes_key[i]); 907 878 } 908 879 … … 910 881 int tigerkey = 0; 911 882 for (i = 64; i < 120; i++) { 912 if(r eader[ridx].rsa_mod[i] > 0) {883 if(rdr->rsa_mod[i] > 0) { 913 884 tigerkey = 1; 914 885 break; … … 916 887 } 917 888 918 if(r eader[ridx].has_rsa) {889 if(rdr->has_rsa) { 919 890 if (!tigerkey) { 920 for (i = 0; i < 64; i++) tpl_printf(vars, 1, "RSAKEY", "%02X", r eader[ridx].rsa_mod[i]);921 for (i = 0; i < 8 ; i++) tpl_printf(vars, 1, "BOXKEY", "%02X", r eader[ridx].nagra_boxkey[i]);891 for (i = 0; i < 64; i++) tpl_printf(vars, 1, "RSAKEY", "%02X", rdr->rsa_mod[i]); 892 for (i = 0; i < 8 ; i++) tpl_printf(vars, 1, "BOXKEY", "%02X", rdr->nagra_boxkey[i]); 922 893 } 923 894 } 924 895 if (tigerkey) { 925 for (i = 0; i < 120; i++) tpl_printf(vars, 1, "TIGERRSAKEY", "%02X", r eader[ridx].rsa_mod[i]);926 for (i = 0; i < 8 ; i++) tpl_printf(vars, 1, "BOXKEY", "%02X", r eader[ridx].nagra_boxkey[i]);927 } 928 929 if ( r eader[ridx].atr[0])930 for (i = 0; i < r eader[ridx].atrlen/2; i++)931 tpl_printf(vars, 1, "ATR", "%02X", r eader[ridx].atr[i]);932 933 if(r eader[ridx].smargopatch)896 for (i = 0; i < 120; i++) tpl_printf(vars, 1, "TIGERRSAKEY", "%02X", rdr->rsa_mod[i]); 897 for (i = 0; i < 8 ; i++) tpl_printf(vars, 1, "BOXKEY", "%02X", rdr->nagra_boxkey[i]); 898 } 899 900 if ( rdr->atr[0]) 901 for (i = 0; i < rdr->atrlen/2; i++) 902 tpl_printf(vars, 1, "ATR", "%02X", rdr->atr[i]); 903 904 if(rdr->smargopatch) 934 905 tpl_addVar(vars, 0, "SMARGOPATCHCHECKED", "checked"); 935 906 936 if (r eader[ridx].detect&0x80)937 tpl_printf(vars, 0, "DETECT", "!%s", RDR_CD_TXT[r eader[ridx].detect&0x7f]);907 if (rdr->detect&0x80) 908 tpl_printf(vars, 0, "DETECT", "!%s", RDR_CD_TXT[rdr->detect&0x7f]); 938 909 else 939 tpl_printf(vars, 0, "DETECT", "%s", RDR_CD_TXT[r eader[ridx].detect&0x7f]);940 941 tpl_printf(vars, 0, "MHZ", "%d", r eader[ridx].mhz);942 tpl_printf(vars, 0, "CARDMHZ", "%d", r eader[ridx].cardmhz);910 tpl_printf(vars, 0, "DETECT", "%s", RDR_CD_TXT[rdr->detect&0x7f]); 911 912 tpl_printf(vars, 0, "MHZ", "%d", rdr->mhz); 913 tpl_printf(vars, 0, "CARDMHZ", "%d", rdr->cardmhz); 943 914 944 915 #ifdef CS_WITH_GBOX 945 tpl_addVar(vars, 0, "GBOXPWD", (char *)r eader[ridx].gbox_pwd);946 tpl_addVar(vars, 0, "PREMIUM", r eader[ridx].gbox_prem);916 tpl_addVar(vars, 0, "GBOXPWD", (char *)rdr->gbox_pwd); 917 tpl_addVar(vars, 0, "PREMIUM", rdr->gbox_prem); 947 918 #endif 948 919 949 tpl_printf(vars, 0, "DEVICE", "%s", r eader[ridx].device);950 if(r eader[ridx].r_port)951 tpl_printf(vars, 1, "DEVICE", ",%d", r eader[ridx].r_port);952 if(r eader[ridx].l_port) {953 if(r eader[ridx].r_port)954 tpl_printf(vars, 1, "DEVICE", ",%d", r eader[ridx].l_port);920 tpl_printf(vars, 0, "DEVICE", "%s", rdr->device); 921 if(rdr->r_port) 922 tpl_printf(vars, 1, "DEVICE", ",%d", rdr->r_port); 923 if(rdr->l_port) { 924 if(rdr->r_port) 925 tpl_printf(vars, 1, "DEVICE", ",%d", rdr->l_port); 955 926 else 956 tpl_printf(vars, 1, "DEVICE", ",,%d", r eader[ridx].l_port);927 tpl_printf(vars, 1, "DEVICE", ",,%d", rdr->l_port); 957 928 } 958 929 959 930 //group 960 value = mk_t_group(r eader[ridx].grp);931 value = mk_t_group(rdr->grp); 961 932 tpl_printf(vars, 0, "GRP", "%s", value); 962 933 free(value); 963 934 964 if(r eader[ridx].lb_weight)965 tpl_printf(vars, 0, "LBWEIGHT", "%d", r eader[ridx].lb_weight);935 if(rdr->lb_weight) 936 tpl_printf(vars, 0, "LBWEIGHT", "%d", rdr->lb_weight); 966 937 967 938 //services 968 939 char sidok[MAX_SIDBITS+1]; 969 sidtabbits2bitchar(r eader[ridx].sidtabok, sidok);940 sidtabbits2bitchar(rdr->sidtabok, sidok); 970 941 char sidno[MAX_SIDBITS+1]; 971 sidtabbits2bitchar(r eader[ridx].sidtabno,sidno);942 sidtabbits2bitchar(rdr->sidtabno,sidno); 972 943 struct s_sidtab *sidtab = cfg->sidtab; 973 944 //build matrix … … 986 957 987 958 // CAID 988 value = mk_t_caidtab(&r eader[ridx].ctab);959 value = mk_t_caidtab(&rdr->ctab); 989 960 tpl_addVar(vars, 0, "CAIDS", value); 990 961 free(value); 991 962 992 963 //ident 993 value = mk_t_ftab(&r eader[ridx].ftab);964 value = mk_t_ftab(&rdr->ftab); 994 965 tpl_printf(vars, 0, "IDENTS", "%s", value); 995 966 free(value); 996 967 997 968 //CHID 998 value = mk_t_ftab(&r eader[ridx].fchid);969 value = mk_t_ftab(&rdr->fchid); 999 970 tpl_printf(vars, 0, "CHIDS", "%s", value); 1000 971 free(value); 1001 972 1002 973 //class 1003 CLASSTAB *clstab = &r eader[ridx].cltab;974 CLASSTAB *clstab = &rdr->cltab; 1004 975 char *dot=""; 1005 976 for(i = 0; i < clstab->an; ++i) { … … 1013 984 } 1014 985 1015 tpl_printf(vars, 0, "SHOWCLS", "%d", r eader[ridx].show_cls);1016 tpl_printf(vars, 0, "MAXQLEN", "%d", r eader[ridx].maxqlen);1017 1018 if(r eader[ridx].cachemm)1019 tpl_printf(vars, 0, "EMMCACHE", "%d,%d,%d", r eader[ridx].cachemm, reader[ridx].rewritemm, reader[ridx].logemm);986 tpl_printf(vars, 0, "SHOWCLS", "%d", rdr->show_cls); 987 tpl_printf(vars, 0, "MAXQLEN", "%d", rdr->maxqlen); 988 989 if(rdr->cachemm) 990 tpl_printf(vars, 0, "EMMCACHE", "%d,%d,%d", rdr->cachemm, rdr->rewritemm, rdr->logemm); 1020 991 1021 992 //savenano … … 1023 994 dot=""; 1024 995 for(i = 0; i < 256; ++i) { 1025 if(!(r eader[ridx].b_nano[i] & 0x02)) {996 if(!(rdr->b_nano[i] & 0x02)) { 1026 997 all = 0; 1027 998 break; … … 1031 1002 else { 1032 1003 for(i = 0; i < 256; ++i) { 1033 if(r eader[ridx].b_nano[i] & 0x02) tpl_printf(vars, 1, "SAVENANO", "%s%02x\n", dot, i);1004 if(rdr->b_nano[i] & 0x02) tpl_printf(vars, 1, "SAVENANO", "%s%02x\n", dot, i); 1034 1005 dot=","; 1035 1006 } … … 1039 1010 dot=""; 1040 1011 for(i = 0; i < 256; ++i) { 1041 if(!(r eader[ridx].b_nano[i] & 0x01)) {1012 if(!(rdr->b_nano[i] & 0x01)) { 1042 1013 all = 0; 1043 1014 break; … … 1047 1018 else { 1048 1019 for(i = 0; i < 256; ++i) { 1049 if(r eader[ridx].b_nano[i] & 0x01) tpl_printf(vars, 1, "BLOCKNANO", "%s%02x\n", dot, i);1020 if(rdr->b_nano[i] & 0x01) tpl_printf(vars, 1, "BLOCKNANO", "%s%02x\n", dot, i); 1050 1021 dot=","; 1051 1022 } 1052 1023 } 1053 1024 1054 if (r eader[ridx].cachecm)1025 if (rdr->cachecm) 1055 1026 tpl_addVar(vars, 0, "ECMCACHECHECKED", "checked"); 1056 1027 1057 if (r eader[ridx].blockemm_unknown)1028 if (rdr->blockemm_unknown) 1058 1029 tpl_addVar(vars, 0, "BLOCKEMMUNKNOWNCHK", "checked"); 1059 if (r eader[ridx].blockemm_u)1030 if (rdr->blockemm_u) 1060 1031 tpl_addVar(vars, 0, "BLOCKEMMUNIQCHK", "checked"); 1061 if (r eader[ridx].blockemm_s)1032 if (rdr->blockemm_s) 1062 1033 tpl_addVar(vars, 0, "BLOCKEMMSHAREDCHK", "checked"); 1063 if (r eader[ridx].blockemm_g)1034 if (rdr->blockemm_g) 1064 1035 tpl_addVar(vars, 0, "BLOCKEMMGLOBALCHK", "checked"); 1065 1036 1066 if (r eader[ridx].deprecated)1037 if (rdr->deprecated) 1067 1038 tpl_addVar(vars, 0, "DEPRECATEDCHCHECKED", "checked"); 1068 1039 1069 if (!strcmp(r eader[ridx].cc_version, "2.0.11")) {1040 if (!strcmp(rdr->cc_version, "2.0.11")) { 1070 1041 tpl_addVar(vars, 0, "CCCVERSIONSELECTED0", "selected"); 1071 } else if (!strcmp(r eader[ridx].cc_version, "2.1.1")) {1042 } else if (!strcmp(rdr->cc_version, "2.1.1")) { 1072 1043 tpl_addVar(vars, 0, "CCCVERSIONSELECTED1", "selected"); 1073 } else if (!strcmp(r eader[ridx].cc_version, "2.1.2")) {1044 } else if (!strcmp(rdr->cc_version, "2.1.2")) { 1074 1045 tpl_addVar(vars, 0, "CCCVERSIONSELECTED2", "selected"); 1075 } else if (!strcmp(r eader[ridx].cc_version, "2.1.3")) {1046 } else if (!strcmp(rdr->cc_version, "2.1.3")) { 1076 1047 tpl_addVar(vars, 0, "CCCVERSIONSELECTED3", "selected"); 1077 } else if (!strcmp(r eader[ridx].cc_version, "2.1.4")) {1048 } else if (!strcmp(rdr->cc_version, "2.1.4")) { 1078 1049 tpl_addVar(vars, 0, "CCCVERSIONSELECTED4", "selected"); 1079 1050 } 1080 1051 1081 tpl_printf(vars, 0, "TMP", "NDSVERSION%d", r eader[ridx].ndsversion);1052 tpl_printf(vars, 0, "TMP", "NDSVERSION%d", rdr->ndsversion); 1082 1053 tpl_addVar(vars, 0, tpl_getVar(vars, "TMP"), "selected"); 1083 1054 1084 tpl_printf(vars, 0, "CCCMAXHOP", "%d", r eader[ridx].cc_maxhop);1085 if(r eader[ridx].cc_want_emu)1055 tpl_printf(vars, 0, "CCCMAXHOP", "%d", rdr->cc_maxhop); 1056 if(rdr->cc_want_emu) 1086 1057 tpl_addVar(vars, 0, "CCCWANTEMUCHECKED", "checked"); 1087 1058 1088 if(r eader[ridx].cc_keepalive)1059 if(rdr->cc_keepalive) 1089 1060 tpl_addVar(vars, 0, "KEEPALIVECHECKED", "selected"); 1090 1061 1091 1062 // Show only parameters which needed for the reader 1092 switch (r eader[ridx].typ) {1063 switch (rdr->typ) { 1093 1064 case R_CONSTCW: 1094 1065 tpl_addVar(vars, 0, "PROTOCOL", "constcw"); … … 1134 1105 break; 1135 1106 case R_NEWCAMD : 1136 if ( r eader[ridx].ncd_proto == NCD_525 ){1107 if ( rdr->ncd_proto == NCD_525 ){ 1137 1108 tpl_addVar(vars, 0, "PROTOCOL", "newcamd525"); 1138 1109 tpl_addVar(vars, 1, "READERDEPENDINGCONFIG", tpl_getTpl(vars, "READERCONFIGNCD525BIT")); 1139 } else if ( r eader[ridx].ncd_proto == NCD_524 ) {1110 } else if ( rdr->ncd_proto == NCD_524 ) { 1140 1111 tpl_addVar(vars, 0, "PROTOCOL", "newcamd524"); 1141 1112 tpl_addVar(vars, 1, "READERDEPENDINGCONFIG", tpl_getTpl(vars, "READERCONFIGNCD524BIT")); … … 1160 1131 default : 1161 1132 tpl_addVar(vars, 1, "MESSAGE", "<b>Error: protocol not resolvable</b><BR>"); 1162 tpl_printf(vars, 1, "MESSAGE", "<b>Error: protocol number: %d readername: %s readeridx: %d</b><BR>", r eader[ridx].typ, reader[ridx].label, ridx);1133 tpl_printf(vars, 1, "MESSAGE", "<b>Error: protocol number: %d readername: %s readeridx: %d</b><BR>", rdr->typ, rdr->label, ridx); 1163 1134 break; 1164 1135 … … 1348 1319 if (!account->au) tpl_addVar(vars, 0, "AUSELECTED", "selected"); 1349 1320 if (account->autoau == 1) tpl_addVar(vars, 0, "AUTOAUSELECTED", "selected"); 1321 struct s_reader *rdr; 1350 1322 int ridx; 1351 for (ridx=0 ; ridx<CS_MAXREADER;ridx++) {1352 if(!r eader[ridx].device[0]) break;1353 tpl_addVar(vars, 0, "READERNAME", r eader[ridx].label);1323 for (ridx=0,rdr=first_reader; rdr ; rdr=rdr->next, ridx++) { 1324 if(!rdr->device[0]) break; 1325 tpl_addVar(vars, 0, "READERNAME", rdr->label); 1354 1326 if (account->au == ridx) tpl_addVar(vars, 0, "SELECTED", "selected"); 1355 1327 else tpl_addVar(vars, 0, "SELECTED", ""); … … 1617 1589 1618 1590 if (cfg->saveinithistory && strlen(reader_) > 0) { 1619 for (ridx = 0; ridx < CS_MAXREADER && strcmp(reader_, 1620 reader[ridx].label) != 0; ridx++) 1621 ; 1591 struct s_reader *rdr; 1592 for (ridx=0,rdr=first_reader; rdr && strcmp(reader_, rdr->label); rdr=rdr->next, ridx++); 1622 1593 1623 1594 if (reader[ridx].typ == R_CCCAM) { … … 1885 1856 if (cl->typ == 'r' || cl->typ == 'p') //reader or proxy 1886 1857 { 1887 int ridx; 1888 for (ridx = 0; ridx < CS_MAXREADER; ridx++) 1889 { 1890 if(ridx == cl->ridx) 1891 { 1892 if (reader[ridx].lbvalue) 1893 tpl_printf(vars, 0, "CLIENTLBVALUE", "<A HREF=\"status.html?action=resetstat&ridx=%d\" TITLE=\"Reset statistics for this reader/ proxy\">%d</A>", ridx, reader[ridx].lbvalue); 1894 1895 switch(reader[ridx].card_status) 1858 struct s_reader *rdr = &reader[cl->ridx]; 1859 if (rdr->lbvalue) 1860 tpl_printf(vars, 0, "CLIENTLBVALUE", "<A HREF=\"status.html?action=resetstat&ridx=%d\" TITLE=\"Reset statistics for this reader/ proxy\">%d</A>", cl->ridx, rdr->lbvalue); 1861 1862 switch(rdr->card_status) 1896 1863 { 1897 1864 case NO_CARD: txt = "OFF"; break; … … 1906 1873 default: txt = "UNDEF"; 1907 1874 } 1908 }1909 }1910 1911 1875 } 1912 1876 tpl_printf(vars, 0, "CLIENTCON", txt);
Note:
See TracChangeset
for help on using the changeset viewer.