/*****************************************************************************\ ** ** ** PBX4Linux ** ** ** **---------------------------------------------------------------------------** ** Copyright: Andreas Eversberg ** ** ** ** extension header file ** ** ** \*****************************************************************************/ /* maximum number of redial/powerdial and reply numbers to remember */ #define MAX_REMEMBER 99 /* display of callerid on internal numbers */ enum { DISPLAY_CID_ASIS, /* with type as defined */ DISPLAY_CID_NUMBER, /* "5551212" */ DISPLAY_CID_ABBREVIATION, /* "05" */ DISPLAY_CID_NAME, /* "Axel" */ DISPLAY_CID_NAME_NUMBER, /* "Axel 5551212" */ DISPLAY_CID_NUMBER_NAME, /* "5551212 Axel" */ DISPLAY_CID_ABBREV_NUMBER, /* "05 5551212" */ DISPLAY_CID_ABBREV_NAME, /* "05 Axel" */ DISPLAY_CID_ABBREV_NUMBER_NAME, /* "05 5551212 Axel" */ DISPLAY_CID_ABBREV_NAME_NUMBER /* "05 Axel 5551212" */ }; enum { DISPLAY_CID_INTERNAL_OFF, /* "20" */ DISPLAY_CID_INTERNAL_ON /* "Intern 20" */ }; /* display of clear causes using display messages */ enum { DISPLAY_CAUSE_NONE, DISPLAY_CAUSE_ENGLISH, /* "34 - no channel" */ DISPLAY_CAUSE_GERMAN, /* "34 - kein Kanal" */ DISPLAY_LOCATION_ENGLISH, /* "34 - Network (Remote)" */ DISPLAY_LOCATION_GERMAN, /* "34 - Vermittlung (Gegenstelle)" */ DISPLAY_CAUSE_NUMBER /* "Cause 34" */ }; /* clip */ enum { CLIP_ASIS, /* use colp as presented by caller */ CLIP_HIDE /* use extension's caller id */ }; /* colp */ enum { COLP_ASIS, /* use colp as presented by called */ COLP_HIDE, /* use extension's caller id */ COLP_FORCE /* use colp even if called dosn't provide or allow */ }; /* codec to use */ enum { CODEC_OFF, /* record wave off */ CODEC_MONO, /* record wave mono */ CODEC_STEREO, /* record wave stereo */ CODEC_8BIT, /* record wave mono 8bit */ CODEC_LAW /* record LAW */ }; /* VBOX mode */ enum { VBOX_MODE_NORMAL, /* normal mode: send announcement, then record */ VBOX_MODE_PARALLEL, /* parallel mode: send announcement and record during announcement */ VBOX_MODE_ANNOUNCEMENT /* announcement mode: send announcement and disconnect */ }; /* VBOX display */ enum { VBOX_DISPLAY_BRIEF, /* parallel mode: send announcement and record during announcement */ VBOX_DISPLAY_DETAILED, /* announcement mode: send announcement and disconnect */ VBOX_DISPLAY_OFF /* normal mode: send announcement, then record */ }; /* VBOX language */ enum { VBOX_LANGUAGE_ENGLISH, /* display and announcements are in english */ VBOX_LANGUAGE_GERMAN /* display and announcements are in german */ }; /* dsptones */ enum { DSP_NONE, DSP_AMERICAN, DSP_GERMAN, DSP_OLDGERMAN }; /* extensions * * extensions are settings saved at //settings * they carry all information and permissions about an extension * they will be loaded when needed and saved when changed */ struct extension { char number[32]; /* number of extension */ char name[32]; char prefix[32]; char next[32]; /* next number to dial when pickup (temp prefix) */ char alarm[32]; char cfb[256]; char cfu[256]; char cfnr[256]; int cfnr_delay; int change_forward; char cfp[256]; char interfaces[128]; char callerid[32]; int callerid_type; int callerid_present; char id_next_call[32]; int id_next_call_type; int id_next_call_present; int change_callerid; int clip; /* how to present caller id on forwarded calls */ int colp; /* how to present called line id on forwarded calls */ char clip_prefix[32]; /* prefix for screening incoming clip */ int keypad; /* support keypad for call control */ int anon_ignore; /* ignore anonymouse calls */ int rights; int delete_ext; /* delete function for external dialing */ int noknocking; /* deny knocking of incoming call */ char last_out[MAX_REMEMBER][64]; /* numbers to redail */ char last_in[MAX_REMEMBER][64]; /* numbers to reply */ int tx_gain; int rx_gain; int display_cause; /* clear cause using display message */ int display_ext; /* display external caller ids */ int display_int; /* display internal caller ids */ int display_fake; /* display fake caller ids */ int display_anon; /* display anonymouse caller ids */ int display_menu; /* display menu */ int display_dialing; /* display interpreted digits while dialing */ int display_name; /* display caller's name if available (CNIP) */ char tones_dir[64]; /* directory of all tones/patterns */ int record; /* SEE RECORD_* */ char password[64]; /* callback / login password */ int vbox_mode; /* see VBOX_MODE_* */ int vbox_codec; /* see CODEC_* */ int vbox_time; /* time to recorde, 0=infinite */ int vbox_display; /* see VBOX_DISPLAY_* */ int vbox_language; /* see VBOX_LANGUAGE_* */ char vbox_email[128]; /* send mail if given */ int vbox_email_file; /* set, if also the audio fille will be attached */ int vbox_free; /* if vbox shall connect after announcment */ int own_setup; int own_proceeding; int own_alerting; int own_cause; int facility; /* must be set to forward facility to terminal */ int datacall; /* data calls are handled as voice calls */ int no_seconds; /* don't include seconds in the connect message */ char otp_ident[9]; /* up to 8 bytes of ident */ char dov_ident[256]; /* ident string to be sent to remote via Data-Over-Voice */ char dov_log[256]; /* log file to store received and sent Data-Over-Voice messages */ int dov_type; /* type of modulation */ int dov_level; /* amplitude of signal */ }; int read_extension(struct extension *ext, char *number); int write_extension(struct extension *ext, char *number); int write_log(char *number, char *callerid, char *calledid, time_t start, time_t stop, int aoce, int cause, int location); int parse_phonebook(char *number, char **abbrev_pointer, char **phone_pointer, char **name_pointer); int parse_secrets(char *number, char *remote_id, char **auth_pointer, char **crypt_pointer, char **key_pointer); char *parse_directory(char *number, int type); struct caller_info; int parse_callbackauth(char *number, struct caller_info *callerinfo); void append_callbackauth(char *number, struct caller_info *callerinfo);